2013-07-02 3 views
1

Чтобы изменить значения атрибута элементов формы, я использую javascript, который обращается к ним благодаря их атрибуту name.Именование имени компонента компонента Symfony Form и доступ к javascript

Компонент формы Symfony2.2 генерирует автоматическое имя, полученное из возвращаемого значения функции getName(), и имя, присвоенное элементу метода BuidlForm.

public function getName() 
{ 
    return 'UserAccountCreateAccount'; 
} 


public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
      ->add('firstName', 'text', 

В этом примере моего имя атрибут будет иметь значение 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]»)

ответ

0

Вы можете получить доступ к входным данным, используя следующий метод, вместо:

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

И кстати это Javascript, а не Java :)

Смежные вопросы