Ответ 1
Я уверен, что нет простого ответа. Самое близкое, по-видимому, изменение разметки, используя форму. Благодарим вас за Michi.
Этот вопрос похож на другой вопрос. Там решение для установки класса CSS должно было добавить его в третий параметр вызова FormBuilder:: add():
->add('title', null, array('attr' => array('class'=>'span2')))
К сожалению, это не работает для установки идентификатора CSS. Когда я делаю
->add('title', null, array('attr' => array('id'=>'title-field')))
... это игнорируется. Идентификатор остается чем-то вроде namespace_formtype_field.
Как я могу установить идентификатор CSS, если вообще?
Я уверен, что нет простого ответа. Самое близкое, по-видимому, изменение разметки, используя форму. Благодарим вас за Michi.
Вы можете сделать это, когда вы визуализируете свое поле в ветке, если вы устанавливаете свой id вне массива 'attributes' следующим образом:
{{ form_widget(form.field, { 'id': 'my_custom_id', 'attr': { 'class' : 'my_custom_class }} )}}
На уровне твига вы можете просто сделать это:
{{ form_widget(form. title, { 'id': 'title-field' }) }}
Протестировано на Symfony 2.3.4
Поскольку элемент HTML не может иметь несколько идентификаторов, то, что вы пытаетесь выполнить, невозможно, так как Symfony уже использует ID для элементов формы.
Способом решения этой проблемы будет изменение JavaScript для использования классов вместо этого и использование
->add('title', null, array(
'attr' => array(
'class'=>'title-field'
)
))
Другой способ - изменить идентификатор, используемый вашим JavaScript для Symfony.