为了更改表单元素的属性值,我使用了一个 javascript 来访问它们,这要归功于它们的 name 属性。
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肯定会误解(我猜是数组)并且不起作用。
我发现的唯一解决方法是在 getName() 中返回一个空字符串,以将“firstName”作为属性的名称。
public function getName()
{
return '';
}
在 JavaScript 中:
useraccountinfoform.firstName.readOnly = true;
然后正在工作。
有没有另一种更简洁的方法来处理这个问题,并且有一个由 Symfony 生成的 name 属性值可以被 javascript 理解?
注意:我试过这个:
$builder
->add('firstName', 'text',
array('attr' => array('name' => 'firstName')));
但这不起作用,因为我为同一个元素获得了 2 个名称属性,而第一个仅由 java 考虑(即“UserAccountCreateAccount [firstName]”)