2

我正在尝试验证表单,但它的行为很奇怪,我是 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验证但忽略长度验证。

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

4

1 回答 1

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()

于 2013-10-22T18:37:25.260 回答