Symfony 3では、選択リストメニューの 'プレースホルダ'を表示しないようにしたい選択可能である)を選択することができる。私MyEntityTypeのsymfony 3 - フォームの選択: "placeholder"に 'disabled' = trueを設定する方法
関数buildFormは()、拡張AbstractTypeは次のようになります。私はドキュメントを見てみると
public function buildForm(FormBuilderInterface $builder, array $options)
{
$list = array([array with choices values and descriptions]);
$builder
->add('description',TextType::class, array('label'=>'trans.my_desc'))
->add('list',ChoiceType::class,array(
'label'=>'trans.my_list',
'multiple'=>false,
'choices'=>$list,
'placeholder'=>'trans.do_a_choice',
//'placeholder_in_choices'=>false //this option is not available
)
->add('submit',SubmitType::class,array('label'=>'trans.validate'));
}
、私はそこにブーリアンオプションplaceholder_in_choices(http://symfony.com/doc/current/reference/forms/types/choice.html#field-variables)ですが、このオプションはできないことを見ます" - > add( 'list'、ChoiceType :: class、array([リストのオプションの配列])"の下にある[list for options]の配列に設定します( 'placeholder_in_choices'は利用可能なオプション)
私の検索で私はこの既存の質問を私の近くに見つけました:Symfony how to disable the default option
それを通して読んだ後、私はMyEntityTypeクラスにfinishView()関数を実装しようとしました:
public function finishView(FormView $view, FormInterface $form, array $options){
var_dump($view->children['list']->vars);
foreach ($view->children['list']->vars['choices'] as $sma) {
if ($sma->value == "") {
$sma->attr['disabled'] = 'disabled';
}
}
}
問題は、それがのvar_dumpに示されるように、ということである()、$ [表示] - > children ['list'] - > vars ['choices']に 'プレースホルダ'の値またはラベル(trans.do_a_choice)が含まれていないため、 'disabled'属性を付けることはできません。
「trans.do_a_choice」を選択メニューのプレースホルダとして表示する方法はありますが、オプションリストには表示されない(または選択できない)という手掛かりはありますか?
ちょうどあなたがフィールド上trueに必要な設定を確実?次に、プレースホルダを設定してフォームを設定すると、値が設定されていないためエラーが発生します。 – LMS94
わかりません。プレースホルダを表示したい場合は、ユーザーがドロップダウンをクリックするとすぐに消えますか?そのような場合は、フロントエンド(JS)のタスクのように聞こえます。 –
@ LMS94