【问题标题】:Zend Framework 2 form annotation is ignored without an extra spaceZend Framework 2 表单注释在没有额外空格的情况下被忽略
【发布时间】:2013-03-06 12:27:40
【问题描述】:

我花了好几个小时把头撞在墙上。无论如何,我的表单字段的标签都没有出现。

终于发现,如果没有光标所在的额外空间(见图),所有注释都会被忽略。我正在使用 ZF 2.1.1 和 Doctrine Common 2.2.3。

我做错了吗?或者这是 ZF 或 Doctrine 解析器中的错误?

作品:

   class LoginForm
   {
   /** @Annotation\Type("text")
    * @Annotation\Options({"label":"Store ID:"})
    * @Annotation\Required(true)
    * @Annotation\Filter({"name":"StringTrim"})
    * @Annotation\Validator({"name":"StringLength","options":{"min":2,"max":64}})
    */
   public $sStoreId;
   }

失败,除非 /** 后面有空格:

   class LoginForm
   {
   /**
    * @Annotation\Type("text")
    * @Annotation\Options({"label":"Store ID:"})
    * @Annotation\Required(true)
    * @Annotation\Filter({"name":"StringTrim"})
    * @Annotation\Validator({"name":"StringLength","options":{"min":2,"max":64}})
    */
   public $sStoreId;
   }

【问题讨论】:

  • 我的所有@Annotations 也被忽略了。我扔了一个@Annotation\ErrorCheckThisIsPoorlyMade() 没有抛出任何错误。什么给了?
  • 另外,我确实发现我必须添加 use Zend\Form\Annotation;到班级的顶峰。它在注解中使用快捷方式“注解”,您需要为该类定义命名空间。
  • 是的,需要use Zend\Form\Annotation;
  • 添加 Zend\Form\Annotation 解决了我的问题,感谢@cr125rider

标签: php forms annotations doctrine zend-framework2


【解决方案1】:

似乎没有解决方案,因此请使用原始问题中提供的解决方法之一:

  • 在 /** 后加一个空格(容易忘记)
  • 将第一个注释或任何文本注释与/**放在同一行

【讨论】:

    【解决方案2】:

    因为注释使用的是 php-doc 标准,所以第一行总是用于注释/描述。必须给予。如果您没有提供评论/说明,请将该行留空。

    【讨论】:

    • 空行不起作用。我要么需要将第一个注释直接放在 /** 行中,要么在其中放置一些文本(丑陋)或使用空格
    • 发布到原始问题。
    • 这是 ZF 的常见问题,每当新版本发布时,大部分时间它都会违反教条。如果 ZF2.1.1 中存在错误,我不会感到惊讶。至于学说注释问题,请参见此处的示例。 docs.doctrine-project.org/projects/doctrine-common/en/latest/… 它应该适用于两种方式。
    猜你喜欢
    • 2019-04-03
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2017-09-14
    • 1970-01-01
    • 2019-10-11
    相关资源
    最近更新 更多