Как добавить пользовательские атрибуты в элементы опций в Symfony 2 form builder
Я пытаюсь добавить пользовательские атрибуты к элементам опции, используя symfony2 form builder im im не уверен, что это изначально возможно. Если это не так, мне нужно знать, как я буду добавлять функциональность.
возьмите в качестве примера следующую форму:
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',
)
));
}
}
но это не работает. Так что любая помощь в этом будет очень признателен.
3 ответов
вам может потребоваться создать собственный виджет, расширенный из виджета "выбор".
таким образом, Вы сможете использовать пользовательский рендеринг для своих параметров, и вы сможете настроить все, что хотите, в атрибутах для каждого параметра.
NB: я выглядел так же, но использовал простой "выбор", и в шаблоне я добавил JS var с дополнительными параметрами (массив со значениями из "select" и заданными дополнительными атрибутами). Я применяю каждый дополнительный атрибут на основе значений параметра he при загрузке страницы событие.
пожалуйста, используйте этот код ниже для набора атрибутов в symfony2
->add('birthdate', 'date',array(
'input' => 'datetime',
'widget' => 'single_text',
'attr' => array('class'=>'calendar')
))