Symfony表单组件元素命名和javascript访问

时间:2013-07-02 14:50:52

标签: javascript symfony-forms symfony-2.2

要更改表单元素的属性值,我使用的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生成的名称属性值,可以通过javascript理解吗?

注意:我试过这个:

$builder
      ->add('firstName', 'text', 
               array('attr' => array('name' => 'firstName')));

但这不起作用,因为我为同一个元素获得了2个名称属性,而第一个只被java考虑(即“UserAccountCreateAccount [firstName]”)

1 个答案:

答案 0 :(得分:0)

您可以使用以下方法访问输入:

document.forms["UserAccountCreateAccount"]["UserAccountCreateAccount[firstName]"].readonly = true

顺便说一下,它是Javascript,而不是Java:)