Ich verwende @Assert\Choice
Validierung für eine Eigenschaft in einer Entität.Zugriff auf den Validator-Service im benutzerdefinierten Repository in 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;
}
ein neues ApplicationQuestion
von ApplicationQuestionRepository
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;
}
}
Erstellen Wie gehe ich Zugriff auf den validator
Service für assert
Zustand zu überprüfen, bevor das Einfügen. So wollen in ApplicationQuestionRepository
, so etwas tun
$this->get('validator')->validate($question);
aber nicht sicher, wie die validator
Service innerhalb des benutzerdefinierten Repository zu injizieren.
Dank
Dank. Ich denke, der Service wäre eine bessere Option. Prost! – Abstract