フォーム要素の属性値を変更するには、name 属性のおかげでそれらにアクセスする JavaScript を使用しています。
Symfony2.2 のフォーム コンポーネントは、getName() 関数の戻り値と BuidlForm メソッドで要素に与えられた名前から構成される自動名前値を生成しています。
public function getName()
{
return 'UserAccountCreateAccount';
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('firstName', 'text',
この例では、name 属性の値はUserAccountCreateAccount[firstName]になります。
Javaでこれを試すと:
useraccountinfoform.UserAccountCreateAccount[firstName].readOnly = true;
Java は確かに解釈を誤っており (配列だと思います)、動作していません。
私が見つけた唯一の回避策は、属性の名前として「firstName」を持つように getName() で空の文字列を返すことです。
public function getName()
{
return '';
}
JavaScript では:
useraccountinfoform.firstName.readOnly = true;
その後、動作しています。
これを処理し、javascript が理解できる Symfony によって生成された name 属性値を持つ別のよりクリーンな方法はありますか?
注:私はこれを試しました:
$builder
->add('firstName', 'text',
array('attr' => array('name' => 'firstName')));
しかし、同じ要素に対して2つの名前属性を取得し、最初の属性のみがJavaによって考慮されるため、これは機能しません(つまり、「UserAccountCreateAccount [firstName]」)