Symfony 获取表单视图(或表单生成器)中要与JS一起使用的实体断言属性

Symfony 获取表单视图(或表单生成器)中要与JS一起使用的实体断言属性,symfony,Symfony,我试图从表单访问实体类中定义的断言信息 class MyEntity { [...] /* * @Assert\Count(min="1", max="3") */ protected $myfield; [...] } 其目的是自定义视图。 在本例中,我想显示一条消息,告诉您必须在[min]和[max]项之间输入 我在form\u div\u layout.html.twig中转储了很多变量 我试图探索FormBuilder对象,但没有找到这个 你知道实现这一目标

我试图从表单访问实体类中定义的断言信息

class MyEntity {
  [...]
  /*
   * @Assert\Count(min="1", max="3")
   */
  protected $myfield;
  [...]
}
其目的是自定义视图。 在本例中,我想显示一条消息,告诉您必须在[min]和[max]项之间输入

我在form\u div\u layout.html.twig中转储了很多变量 我试图探索FormBuilder对象,但没有找到这个

你知道实现这一目标的方法吗

PS:对不起,我的英语很差

在Martin Rios回答后编辑:

目标不是提供错误消息

最终目标是将这些值用于构建视图

例如,如果您使用这个jQuery插件:,您可以有一个add item链接和一个remove item

如果我想在集合达到最大大小时禁用add item链接,我需要在JavaScript中操作constraint属性


我试着研究这个插件,但不明白它是如何工作的…

你为什么不像以前那样做呢

这比在实体内进行要容易得多。同时,您还可以享受不将实体与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"
确保要验证的属性是集合的属性,即实现可计数的数组或对象

在chakh–l版本之后编辑: 您不需要使事情过于复杂,如果您想从某个地方访问它,只需将这些值保存在parameters.yml中,然后执行 AFAIK您不能在验证中使用parameters.yml中定义的变量,否则这将非常容易


但我试着永远记住,形式就是形式,观点是不同的东西。因此,如果您想保持简单,只需将此min/max值作为附加模板数组传递,并在parameters.yml中定义它。只有当你需要更深入,然后将它们注入到自定义验证器中,并将它们放在一个地方,但我个人认为这听起来有点过于复杂了

谢谢你的回答。我认为我的消息中的注释与您的语法相同。目标不是显示错误消息,而是将这些值用于构建视图。我会更准确地编辑我的信息。我不确定是否真的很清楚,但我的问题不是关于验证。这是关于显示与验证相关的信息,但在用户提交数据之前,更多的是关于人体工程学:防止错误而不是检测错误我理解你的意思。但是@Assert\Countmin=1,max=3用于验证。只有在提交后才能访问/检查该值。然后,如果要防止,只需在其他位置定义此值,并将其作为参数传递到视图中。您最初定义问题的方式都是关于验证的。我同意我的帖子可能有点混乱,因为我试图显示通常在验证后显示的消息。在formview中,可以访问值,然后访问基础实体。我认为我还没有找到解决方案,我想验证时使用的机制可以复制。的确,我可以手动将该值传递给视图,但由于该值已在实体中定义,因此我希望获得它们。我相信另一种方法是:如何使用实体元数据实现客户端验证?