1

フォーム選択フィールドのチェックボックスの一部を無効にするタスクと無効にするタスクがあります。選択フィールドのレイアウトを書き直さずにそれを達成する簡単な方法はありますか?

4

2 に答える 2

3

選択フィールドで無効状態を設定できます:

$builder->add('myChoice', 'choice', array('attr'=>array('disabled'=>'disabled')));

または、無効状態を設定するために必要なロジックがある場合は、EventSubscriberを使用してPostSetDataイベントをリッスンすることができます。実装の詳細については、クックブックの動的フォーム生成を確認してください。

于 2012-09-28T23:38:51.240 に答える
2

フラビエンの解決策について何かを明らかにしたいのですが、彼の投稿の下でコメントするのに十分な評判がありません。

$builder->add('myChoice', 'choice', array('attr'=>array('disabled'=>'disabled')));

'disabled' =>'disabled'の使用は間違っています(正しい部分が間違っているため)。動作しますが、無効(左)はブール値を受け入れ、trueまたはfalseを受け取る必要があります。この場合、0以外のすべてが真であるため、実際に機能します。

なぜ私はこれを説明しているのですか?誰かが同じフォームを別の場所で使用して、1つの入力を無効にしたい(実際には読み取り専用にする)ためです。したがって、彼は変数を「disabled」パラメーターにフィードし、その変数がブール値でない場合は、常に入力が無効になります。

tl; dr

 $builder->add('myChoice', 'choice', array('attr'=>array('disabled'=>true)));

また

$builder->add('myChoice', 'choice', array('attr'=>array('disabled'=>false)));
于 2016-08-10T15:47:33.220 に答える