2016-04-20 101 views
0

我正在使用@Assert\Choice驗證實體中的屬性。如何訪問Symfony中自定義存儲庫中的驗證器服務

ApplicationQuestion.php

<?php 

/** 
* ApplicationQuestion 
* 
* @ORM\Table(name="j_application_questions") 
* @ORM\Entity(repositoryClass="JobsBundle\Repository\ApplicationQuestionRepository") 
* @ExclusionPolicy("all") 
*/ 
class ApplicationQuestion 
{ 
    /** 
    * @var int 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    * @Expose() 
    */ 
    private $id; 

    /** 
    * @var string 
    * @Column(type="string", length=20) 
    * @Assert\Choice(choices={"free_text","boolean", "multiple_choice", "video"}, message="Choose a valid answer type") 
    * @Expose() 
    */ 
    protected $answer_type; 

} 

創建一個新ApplicationQuestionApplicationQuestionRepository

ApplicationQuestionRepository.php

<?php 
class ApplicationQuestionRepository extends EntityRepository 
{ 
    /** 
    * @param $data 
    * @param Job $job 
    * @return bool|ApplicationQuestion 
    */ 
    private function createNewQuestion($data, Job $job) 
    { 
     if($data['answer_type'] == 'multiple_choice' && !array_key_exists('answer_choices', $data)){ 
      return false; 
     } 

     $question = new ApplicationQuestion(); 
     $question 
      ->setJob($job) 
      ->setQuestion($data['question']) 
      ->setAnswerType($data['answer_type']) 
      ->setQuestionFor('job_application') 
      ; 
     if($data['answer_type'] == 'multiple_choice') 
      $question->setAnswerChoices($data['answer_choices']); 

     return $question; 
    } 

} 

如何去我訪問validator服務之前,插入驗證了assert條件。所以,想要做這樣的事情在ApplicationQuestionRepository

$this->get('validator')->validate($question); 

,但不知道如何注入定製倉庫裏validator服務。

感謝

回答

相關問題