FormBuilder - 使用 ChoiceView 代替 ChoiceType
FormBuilder - Use ChoiceView instead with ChoiceType
我正在尝试在 ChoiceType
的占位符上设置 disabled
。
虽然我在 SO 上找到了一些答案,但我无法应用它们。
与此同时,我注意到了一些事情,并且需要它来完成。
就目前而言,当我们在 twig 视图中转储 choices
时,我们可以注意到 choices
是由多个 ChoiceView
.
组成的数组
因此,我想,也许我可以直接在 formBuilder 中使用 ChoiceView
,就像这样:
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add('title')
->add('desc')
->add('status', ChoiceType::class, array(
'choices'=>array(
new ChoiceView('', '', 'Select a status, array('disabled'=>'disabled')),
'Draft'=>'draft',
'Complete'=>'complete',
'Aborted'=>'aborted',
),
));
}
但作为例外,它不起作用...
有人知道在使用 ChoiceView
时构建表单的方法吗?
如果你想操作 FormView
对象,你必须在你的 FormType 上实现 finishView
方法。
在您的具体情况下:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add(
'status',
ChoiceType::class,
array(
'choices' => array(
'Draft' => 'draft',
'Complete' => 'complete',
'Aborted' => 'aborted',
),
)
);
}
public function finishView(FormView $view, FormInterface $form, array $options)
{
array_unshift(
$view->children['status']->vars['choices'],
new ChoiceView('', '', 'Select a status', array('disabled' => 'disabled'))
);
}
我正在尝试在 ChoiceType
的占位符上设置 disabled
。
虽然我在 SO 上找到了一些答案,但我无法应用它们。 与此同时,我注意到了一些事情,并且需要它来完成。
就目前而言,当我们在 twig 视图中转储 choices
时,我们可以注意到 choices
是由多个 ChoiceView
.
因此,我想,也许我可以直接在 formBuilder 中使用 ChoiceView
,就像这样:
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add('title')
->add('desc')
->add('status', ChoiceType::class, array(
'choices'=>array(
new ChoiceView('', '', 'Select a status, array('disabled'=>'disabled')),
'Draft'=>'draft',
'Complete'=>'complete',
'Aborted'=>'aborted',
),
));
}
但作为例外,它不起作用...
有人知道在使用 ChoiceView
时构建表单的方法吗?
如果你想操作 FormView
对象,你必须在你的 FormType 上实现 finishView
方法。
在您的具体情况下:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add(
'status',
ChoiceType::class,
array(
'choices' => array(
'Draft' => 'draft',
'Complete' => 'complete',
'Aborted' => 'aborted',
),
)
);
}
public function finishView(FormView $view, FormInterface $form, array $options)
{
array_unshift(
$view->children['status']->vars['choices'],
new ChoiceView('', '', 'Select a status', array('disabled' => 'disabled'))
);
}