我想为Admin
类的EntityType
创建一个自定义类型,以利用代码重用,我有以下代码:
class AdminEntityType extends AbstractType
{
public function getParent(): string
{
return EntityType::class;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'class' => Admin::class,
'label' => 'Admin :',
'multiple' => false,
]);
}
}
我想在$options['multiple']
值的基础上修改$options['attr']['class']
。类似于:
public function buildView(FormView $view, FormInterface $form, array $options)
{
if ($options['multiple']) {
$options['attr']['class'] = 'form-control select select2-hidden-accessible';
} else {
$options['attr']['class'] = 'form-control select-search';
}
parent::buildView($view, $form, $options);
}
但代码不起作用。什么是正确的方法?
在我的表格中,我想使用
$builder->add(
'admin',
AdminEntityType::class,
[
'multiple' => true
]
);
并决定应该对attr.class
参数产生影响的multiple
参数。
使用Symfony 5.4
最后,我设法获得了如下所需的功能:
public function buildView(FormView $view, FormInterface $form, array $options)
{
parent::buildView($view, $form, $options);
if ($options['multiple']) {
$view->vars['attr']['class'] = 'form-control select select2-hidden-accessible';
} else {
$view->vars['attr']['class'] = 'form-control select-search';
}
}
不确定其通过的方法是否正确