Php Symfony 2禁用选项

Php Symfony 2禁用选项,php,forms,symfony,Php,Forms,Symfony,好的,Twig试图在“下拉”选择列表中添加禁用选项时遇到了问题。我一周中的所有日子都有一个往返时间 然而,我已经构建了一个解决方案,我将数据输入到类型中,并设置了一个小函数来查看表单元素是否被禁用,并根据设置 我的控制器里有什么 $SetData = $this->getDoctrine() ->getRepository('Bundle:XXXXXInfo') ->findOneById($ID);

好的,Twig试图在“下拉”选择列表中添加禁用选项时遇到了问题。我一周中的所有日子都有一个往返时间

然而,我已经构建了一个解决方案,我将数据输入到类型中,并设置了一个小函数来查看表单元素是否被禁用,并根据设置

我的控制器里有什么

 $SetData = $this->getDoctrine()
                   ->getRepository('Bundle:XXXXXInfo')
                   ->findOneById($ID);

 $Form = $this->createForm(new InfoType($SetData), $SetData, ['action' => $this->generateUrl('formPath')])
                    ->add('save', 'submit', ['label' => $ButtonLabel,
                                             'attr' => ['class' => 'btn btn-primary'],
                                            ]);
这就是我的信息类型表单的外观

 public function __construct($Data) {
    $this->MyInfo = $Data; 
}

private function SetDisabledOption($From, $To) {

    if ($From === NULL && $To === NULL ) {
        $DisabledOption = true;
    } else {
        $DisabledOption = false;
    }

    return $DisabledOption; 
}
然后在该类型的“buildForm”函数中

 $CurrentData = $this->MyInfo;

 $Monday = $this->SetDisabledOption($CurrentData->getMonFrom(), $CurrentData->getMonTo());
这是我找到的唯一解决方法,因为我尝试了“attr”的各种代码,并且在我想要禁用的表单小部件上使用了而没有使用。我不能让它工作。然后,查看我希望它做什么,我认为如果我将所有逻辑(if语句)保留给控制器/表单生成器,代码会更干净

但是,当这些选项现在设置为NULL且禁用的选项为true时,使用一点Jquery和一个复选框删除它,它不会删除它,并且值仍然设置为NULL

现在我已经尝试在我的表单上使用
getData()
,仍然为空-但是当我检查所有的PHP
$\u POST
数据时,当禁用的数据被删除时,值是可用的

那么我做错了什么


谢谢,

在此查看:-这将允许您根据传递给表单的字段动态修改字段是否被禁用。谢谢您的链接!我没想到有人会在这个问题上发帖然而,我找到了一个变通方法,我认为这是一个更好的方法。我添加了一个“readonly”标签,而不是disabled标签,它似乎按照我想要的方式工作。当我有时间的时候,我会看看我是否可以发布我的作品。是的,如果你将它设置为禁用,那么Symfony将完全忽略传入的任何值,其中readonly应该只影响HTML。