根据symfony formType中的条件禁用文本框


Disabling a text box depending of a condition in symfony formType

我在Symfony2中很新,我对表单类型有问题。

我在数据库中有"消息"表,每条消息都有一个ID,消息和所有者。

然后,我必须在表单中显示这些消息。所以我这样做:

->add('shortComment', 'text', array(
            'label' => 'Short Message',
            'data' => $this->_predefinedMessage->getShortComment()))

所以,对我来说的问题是当我想在以下情况下禁用此文本框时:

owner != currentUser

我不知道该怎么说。我将感谢任何帮助。

多谢。

一种解决方案是将$disabled字段发送到表单中,但在控制器中对其进行初始化:

$disabled = $owner == $currentUser ? false : true;
$form = $this->createForm(new YourFormType($disabled), $messageEntity);

在表单类型中.php

class YourFormType extends AbstractType
{
    protected $disabled;
    public function __construct($disabled){
        $this->disabled = $disabled;
    }
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('shortComment', 'text', array(
            'label' => 'Short Message',
            'disabled' => $this->disabled
        ));    
    }
}

我希望这对你有用。