2017-02-28 9 views
0

ここでは、既存のコードです:symfonyのCheckboxTypeはチェックすることができませんでした

フォームタイプなど:

->add('isProcessor', CheckboxType::class,array('label' => 'As Processor', 'required'=>false)) 

エンティティとして:

/** 
* @var boolean $isProcessor 
* 
* @ORM\Column(name="is_processor", type="boolean") 
* @Assert\NotBlank() 
*/ 
private $isProcessor; 

ページとして: enter image description here

方法これを実現させることができますか:

  • チェックボックスがチェックされている場合、isProcessorはチェックボックスがオフになっている場合
  • は、isProcessorが偽であるべき真でなければなりません

CheckboxTypeと他のいくつかのパラメータがあるべきであるならば、私は、フォームを構築しておりません。または、値を変換するために他のコードを追加する必要があります。

また、このフィールドは、変更ページで変更できませんでした。 変更ページでチェックボックス要素を無効にする方法はありますか?作成ページで有効にする方法はありますか?

ありがとうございました。

答えて

1

$ isProcessorでNotBlank制約を削除するだけでいいと思います。チェックボックスがチェックされていない場合、フォームの値はnullになり、ブール型は0に変換されます。

変更ページではチェックボックス要素を無効にしますが、作成ページでは無効にするには、createFormオプションを使用します。お使いのコントローラで

class YourType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $isProcessorDisable = $options['isProcessorDisable']; 
     $builder->add('isProcessor', CheckboxType::class, array(
      'label' => 'As Processor', 
      'required' => false, 
      'disabled' => $isProcessorDisable 
     )); 
    } 

    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults([ 
      'data_class'    => YourEntity::class, 
      'translation_domain'  => 'form', 
      'isProcessorDisable'  => false // Default value 
     ]); 
    } 
} 
+0

うわー:あなたのフォームタイプで

$form = $this->createForm(YourType::class, $yourData, [ 'isProcessorDisable' => true // or false ]); 

、あなたはそのような何かを行うことができます!ご助力ありがとうございます。それはうまく動作します。再び多くのおかげです。 – Bob

関連する問題