验证断言在symfony2中被忽略了吗?

时间:2013-10-22 17:48:56

标签: validation symfony sonata-admin

我正在尝试获得一个经过验证的表单,但它的行为很奇怪,我是symfony2中的新手,所以我一定会错过一些东西。

我使用SonataAdminBundle创建表单和CRUD控制器。我的ResponsableDato实体拥有此属性:

/**
 * @var string $contacto
 * @Assert\NotBlank(message="Please enter your name.")
 * @Assert\Length(min="3", minMessage="too short."))
 * @ORM\Column(name="contacto", type="string", length=100, nullable=true)
 */
private $contacto;

如果我将contacto字段留空,则会向我显示"Complete this field"条消息,而不是"Please enter your name"。如果我输入一个字符,它会通过NotBlank验证但忽略长度验证。

我能错过什么?听起来好像我必须覆盖某些东西才能使它工作

1 个答案:

答案 0 :(得分:0)

你也在谈论html5验证或isValid()到form_errors()案例?

我非常确定“填写此字段”与表单字段中的“必需”选项相关

$builder->add('contacto', 'text', array('required' => false));

将required设置为false并查看自定义错误消息:)

编辑:

use Symfony\Component\Validator\Constraints as Assert;
[...]
/**
 * @Assert\NotNull()
 */
private $contacto;

这将在提交后触发验证错误,但如果表单中没有此字段的数据,如果需要避免使用空字符串,请使用@Assert \ NotBlank()