2015-06-05 6 views
12

Mam klasy jak poniżej:jak uzyskać dostęp do zmiennych klasy i stałe w adnotacji w Symfony 2 php

class Student { 

const GENDER_MALE = "male", GENDER_FEMALE = "female"; 
/** 
* @var string $gender 
* 
* @ORM\Column(name="gender", type="string", length=50,nullable=false) 
* @Assert\NotBlank(message="Gender cannot be blank",groups={"new"}) 
* @Assert\Choice(choices = {"male", "female"}, message = "Choose a valid gender.", groups={"new"}) 
*/ 
private $gender; 

muszę ciężko kodem Wartości "male" i "female". Czy można zrobić coś takiego?

wybory = {self :: GENDER_MALE, self :: GENDER_FEMALE}

+3

użycie opcji 'callback' zamiast, aw metodzie można powrócić wachlarz swoich stałych. –

+0

wygląda na dobrą alternatywę. dzięki – sonam

Odpowiedz

21

Jest to cecha Doctrine2 Annotation Reader (Constants).

Państwo rozwiązanie:

class Student 
{ 
    const GENDER_MALE = "male", GENDER_FEMALE = "female"; 

    /** 
    * @var string $gender 
    * 
    * @ORM\Column(name="gender", type="string", length=50,nullable=false) 
    * @Assert\NotBlank(message="Gender cannot be blank",groups={"new"}) 
    * @Assert\Choice(
    *  choices = { 
    *   Student::GENDER_FEMALE: "Female", 
    *   Student::GENDER_MALE: "Male" 
    *  }, 
    *  message = "Choose a valid gender.", groups={"new"} 
    *) 
    */ 
    private $gender; 
} 
+0

W twoim przykładzie należy zauważyć, że musisz dodać instrukcję użycia, jeśli łączysz się z innymi klasami. – webDEVILopers

+0

Czy próbowałeś swojego przykładu @ZhukV? Właśnie wypróbowałem instrukcję użycia i klasę zewnętrzną i niestety stałe nie są używane. Może adnotacje do Doctrine nie będą działać z @Assert? Wygląda na to, że działa z wyrażeniami: http://stackoverflow.com/a/34479472/1937050 – webDEVILopers

+0

@webDEVILopers, proszę nie łączyć adnotacji doktryny i języka wyrażenia symfony. Komponenty te mają logikę różnicową i procesy dotyczące adnotacji odczytu/procesu. Adnotacja Doktryna czyta tylko adnotację od metody/właściwości/klasy I TYLKO JA! Ograniczenia symfony mogą działać z dowolną logiką z systemem ograniczeń. – ZhukV

Powiązane problemy