2013-10-16 1 views
7

Я пытаюсь добавить пользовательские атрибуты к элементам опции с помощью конструктора форм symfony2 im im, не уверен, что это изначально возможно. Если это не так, мне нужно знать, как я буду добавлять функциональность.Как добавить настраиваемые атрибуты в элементы элементов в symfony 2 form builder

Возьмем следующую форму в качестве примера:

class FooForm extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder->add('user','choice',array(
      'choices' => array(
       'designers'=>'designers', 
       '1'=>'mike', 
       '2'=>'carroll', 
       'developers'=>'developers', 
       '3'=>'chase', 
       '4'=>'brett', 
       '5'=>'jordan', 
      ) 
     )); 
    } 
} 

тогда, когда оказывается, мне нужно, чтобы это выглядело как:

<select> 
    <option value="" disabled="disabled">designers</option> 
    <option value="1">mike</option> 
    <option value="2">carroll</option> 
    <option value="" disabled="disabled">developers</option> 
    <option value="3">chase</option> 
    <option value="4">brett</option> 
    <option value="5">jordan</option> 
</select> 

, что я бы ожидать, будет что-то вроде:

class FooForm extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder->add('user','choice',array(
      'choices' => array(
       'designers'=>array(
         'label'=>'designers', 
         'attr'=>arrry('disabled'=>'disabled') 
       ), 
       '1'=>'mike', 
       '2'=>'carroll', 
       'developers'=>array(
         'label'=>'developers', 
         'attr'=>arrry('disabled'=>'disabled') 
       ), 
       '3'=>'chase', 
       '4'=>'brett', 
       '5'=>'jordan', 
      ) 
     )); 
    } 
} 

Но это не работает. Поэтому любая помощь по этому поводу будет очень благодарна.

+1

Вам нужно добавить атрибуты в параметры или вы хотите сгруппировать свои параметры? Кажется, вы пытаетесь сгруппировать их. –

+0

Оба, я нашел некоторые группировки в источнике, не уверен, как это сделать. Но мне также нужно добавить атрибуты «data-id» к параметрам, а также – Chausser

+2

Атрибуты по опции не поддерживаются. Если вы создаете вложенный массив значений, вы можете создать группу опций (ключ - имя группы). Если вам действительно нужен способ добавить «идентификатор данных», вероятно, вы должны создать новый FormType, который расширяет тип формы [Entity form] (http://symfony.com/doc/current/reference/forms/types/entity.html) с настраиваемым шаблоном. –

ответ

6

Возможна для choice начиная с 2.7. Посмотрите на here. С choice_attr.

+1

Через 2 года после того, как он мне нужен, они добавляют его. Спасибо за обновление – Chausser

-1

Пожалуйста, используйте этот код ниже для набора атрибутов в Symfony2

->add('birthdate', 'date',array(
     'input' => 'datetime', 
     'widget' => 'single_text', 
     'attr' => array('class'=>'calendar') 
)) 
+0

Это не отвечает на вопрос, я искал способ добавления атрибутов к каждому из вариантов в поле выбора. Не в самом родительском поле. – Chausser

0

Вам может понадобиться создать собственный виджет, простиралась от «выбора» виджета.

Таким образом, вы сможете использовать персонализированный рендеринг по своим параметрам, и вы сможете настроить все, что хотите, в атрибутах для каждой опции.

NB: Я смотрел то же самое, но «использовал простой выбор», а в шаблоне я добавил JS var с дополнительными параметрами (массив со значениями из «select» и заданными дополнительными атрибутами). Я применяю каждый дополнительный атрибут, основываясь на значениях его опций на событии загрузки страницы.

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

  • Нет связанных вопросов^_^