我正在尝试从表单
访问实体类中定义的断言信息class MyEntity {
[...]
/*
* @Assert\Count(min="1", max="3")
*/
protected $myfield;
[...]
}
目的是自定义视图。 在这个例子中,我想显示一条消息,说“你必须在[min]和[max] items之间输入”
我在form_div_layout.html.twig中var_dumped了很多变量 我试图探索FormBuilder对象,但我还没有找到它。
你知道实现这个目标的方法吗?
PS:抱歉我的英语不好
马丁里奥斯回答后编辑:
目标不是提供错误消息。
最终目标是使用这些值来构建视图。
例如,如果你使用这个jQuery插件:sfPrototypeMan,你可以有一个“添加项目”链接和一个“删除项目”。
如果我想在我的集合达到其最大大小时禁用“添加项目”链接,我需要在我的JavaScript中操作约束属性
我尝试研究这个插件JsFormValidatorBundle,但不明白它是如何工作的......
答案 0 :(得分:0)
为什么不像Validation in the cookbook?
那样做远比在实体内部更容易实现。与此同时,您的好处是不会将您的实体与Symfony结合使用。
# src/Acme/BlogBundle/Resources/config/validation.yml
Acme\BlogBundle\Entity\MyEntity:
properties:
myfield:
- Count:
min: 1
max: 3
minMessage: "You must specify at least one item"
maxMessage: "You cannot specify more than {{ limit }} items"
确保您要验证的属性是集合(即实现Countable的数组或对象)
chakhâl版本后编辑: 你不需要过于复杂化,如果你想从某个地方访问它,只需将这些值保存在parameters.yml中并执行Custom form Validation AFAIK你不能在参数中使用参数中定义的变量,否则这将非常容易。
但我总是记住,形式是形式,观点是不同的东西。因此,如果您想保持简单,只需将此最小/最大值作为附加模板数组传递,并在parameters.yml中定义它。只有当你需要更深入,然后将它们注入自定义验证器并将它们放在一个地方(但这听起来像我个人认为有点过于复杂)