Symfony:在扩展内置类型时,如何基于另一个选项更改Form Type选项



我想为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';
}
}

不确定其通过的方法是否正确

最新更新