2015-12-22 3 views
0

Валидатор выражения не работает. Я следую Symfony2 документации, например: http://symfony.com/doc/2.7/reference/constraints/Expression.htmlSymfony2, валидатор выражения не работает

В моем упрощенном случае C: \ Bitnami \ wampstack-5.5.30-0 \ sym_prog \ proj3_27 \ приложение \ 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_prog \ proj3_27 \ приложение \ Config \ config.yml

framework: 
    validation: { enabled: true, enable_annotations: true } 

C: \ Bitnami \ wampstack-5.5.30-0 \ sym_prog \ proj3_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); 
     } 
... 
+0

Что происходит и настоящее время драйвера, что вы ожидаете? –

+0

Если вы хотите, чтобы выражение для выполнения публичной функции 'keywL', возможно, понадобилось использовать круглые скобки. Значение '' this.keywL() <2 "' вместо '' this.keywL <2 "', затем внутри функции keywL, обратитесь к значению, используя $ this-> keyw. – Stphane

ответ

Смежные вопросы