symfony2 表单验证单选按钮

Posted

技术标签:

【中文标题】symfony2 表单验证单选按钮【英文标题】:symfony2 form validation radio buttons 【发布时间】:2013-12-04 07:45:14 【问题描述】:

我正在使用此代码创建 symfony2 表单:

$builder
        ->add('layout_type', 'choice', array(
                'choices'   => array(0 => 'Small layout', 1 => 'Big layout'),
                'expanded' => true,
                'disabled' => $disabled
            ))

.... ))

我遇到的问题是单选按钮验证(layout_type、choice)。

当我没有选择任何单选按钮并提交表单时,数据不会插入到数据库中。 这是正确的,因为单选按钮是必填字段,但是当重新加载表单时,我没有关于单选按钮错误的消息。我正确收到所有其他字段的错误。

我正在使用的树枝:

<table >
        <tr>
            <td class="label"> form_label(form.layout_type, 'LAYOUT_TYPE') </td>
            <td class="widget"> form_widget(form.layout_type)   form_errors(form.layout_type) </td>
        </tr>
        ...

为了验证我正在使用注释:

 /**
 * @var Integer
 * @Assert\NotBlank(message="NOT_EMPTY")
 */
protected $layoutType;

我只有 $layoutType 单选按钮的错误消息有问题 有人知道可能是什么问题。 谢谢

【问题讨论】:

【参考方案1】:
try this:

'choices'   => array(0 => 'Small layout', 1 => 'Big layout'),
                    'expanded' => true,
                    'disabled' => $disabled,
                    'constraints' => new Assert\NotBlank(array('message' => 'YOUR_MESSAGE'))

【讨论】:

是的,它正在工作。谢谢。但我还是不明白为什么注释不起作用。【参考方案2】:

你添加了吗

use Symfony\Component\Validator\Constraints as Assert;

在你的实际实体之前

class entity 

    /**
     * @Assert\NotBlank()
     */
    public $layoutType;
     ........

【讨论】:

是的,我做到了。对于其他字段,错误消息正常工作。 添加assert约束后,是否重新生成了实体?

以上是关于symfony2 表单验证单选按钮的主要内容,如果未能解决你的问题,请参考以下文章

表单验证失败后表单上的单选按钮无法正确呈现 - 引导

jQuery练习---表单验证之单选按钮验证

斯卡拉玩!带有 2 个单选按钮的表单验证

单选按钮验证

如何在单选按钮后显示验证消息?

绕过表单验证