Validation Symfony2,表达式验证程序不工作

Validation Symfony2,表达式验证程序不工作,validation,symfony,Validation,Symfony,表达式验证程序不工作。 下面是Symfony2文档示例: 在我的简化案例中, C:\Bitnami\wampstack-5.5.30-0\sym\u prog\proj3\u 27\app\config\validation.yml MeetingBundle]Entity\SearchLtk: constraints: - Expression: expression: "this.keywL<2"

表达式验证程序不工作。 下面是Symfony2文档示例:

在我的简化案例中, C:\Bitnami\wampstack-5.5.30-0\sym\u prog\proj3\u 27\app\config\validation.yml

    MeetingBundle]Entity\SearchLtk:
        constraints:
            - Expression:
                expression: "this.keywL<2"
                message: "Input more search words"
C:\Bitnami\wampstack-5.5.30-0\sym\u prog\proj3\u 27\src\MeetingBundle\Entity\SearchLtk.php

    /**
     * SearchLtk
     *
     * @ORM\Table(name="search_ltk",indexes={@ORM\Index(columns={"zip"}, flags={"fulltext"})})
     * @ORM\Entity(repositoryClass="MeetingBundle\Repository\SearchLocRepository" )
     */
    class SearchLtk
    {....

         /**
         * @var string
         *
         * @ORM\Column(name="keyw", type="string", nullable = true)
         */
        private $keyw;    

   ... 
        /**
         *
         * @return integer
         */
            public function keywL($keyw)
        {
            $kArr = preg_split( "/[;,\.]+/", $keyw ); 
            foreach ( $kArr as $key=>$item ) {
                $item=trim($item); 
    // the string becomes "", but length is 1, count returns 1
    //but empty returns correctly 
                if( count($item) == 0 or (empty($item))){
                    unset($kArr[$key]);
                }
            }
            return count($kArr );
        } 
...
1) 实体中不应该有方法


2) 签出此函数

当前正在发生的事情以及您期望的是什么?如果希望表达式执行
keywL
公共函数,可能必须使用括号。意思是
“this.keywL()<2”
而不是
”this.keywL
    /**
     * SearchLtk
     *
     * @ORM\Table(name="search_ltk",indexes={@ORM\Index(columns={"zip"}, flags={"fulltext"})})
     * @ORM\Entity(repositoryClass="MeetingBundle\Repository\SearchLocRepository" )
     */
    class SearchLtk
    {....

         /**
         * @var string
         *
         * @ORM\Column(name="keyw", type="string", nullable = true)
         */
        private $keyw;    

   ... 
        /**
         *
         * @return integer
         */
            public function keywL($keyw)
        {
            $kArr = preg_split( "/[;,\.]+/", $keyw ); 
            foreach ( $kArr as $key=>$item ) {
                $item=trim($item); 
    // the string becomes "", but length is 1, count returns 1
    //but empty returns correctly 
                if( count($item) == 0 or (empty($item))){
                    unset($kArr[$key]);
                }
            }
            return count($kArr );
        } 
...