如果在Sonata Admin中选择了单选按钮,如何禁用单选按钮

时间:2018-03-19 15:10:59

标签: php symfony sonata-admin sonata

例如,我有一个实体字段,它开始为空并显示单选按钮,一旦选择单选按钮并保存到实体中,管理页面中的那些单选按钮需要被“禁用”,仍然可见但是并非棘手。

protected function configureFormFields(FormMapper $form)
{
    $form->add('radio_buttons', ChoiceType::class,
    array('choices' => array(
        "choice 1" => 'input1',
        "choice 2" => 'input2'),
        'choices_as_values' => true, 'multiple'=>false, 'expanded'=>true, 'disabled' => false));
}

2 个答案:

答案 0 :(得分:0)

在你看来这样做。

检查是否存在其中一个选择,如果存在则执行不同的代码。

我还建议删除单选按钮(如果存在),并替换为文本。这将阻止一些smartass编辑DOM并更改选择。

答案 1 :(得分:0)

你可以在你的表格中加上一个条件来检查一个领域是否已经填满。 (假设该方法名为getRadioButton())

if ($this->getSubject()->getRadioButton() != null) {
    $form->add(here tell than you need disabled buttons)
} else {
    $form->add(here tell than you need buttons)
}

另外,在表单字段中,您可以添加“html”属性:

->add('radio_buttons', ChoiceType::class,array(
    'what you want'=>'ok',
    'attr'=>array("disabled" => true))

所以最后它会给出像

这样的东西
if ($this->getSubject()->getRadioButton() != null) {
    $form->add('radio_buttons', ChoiceType::class,
    array('choices' => array(
         "choice 1" => 'input1',
         "choice 2" => 'input2'),
         'choices_as_values' => true,
         'multiple'=>false,
         'expanded'=>true,
         'attr' => array('disabled'=>true),
    ));
} else {
     $form->add('radio_buttons', ChoiceType::class,
     array('choices' => array(
         "choice 1" => 'input1',
         "choice 2" => 'input2'),
         'choices_as_values' => true,
         'multiple'=>false,
         'expanded'=>true,
     ));
}

了解更多信息:

  

https://sonata-project.org/bundles/doctrine-orm-admin/master/doc/reference/form_field_definition.html