2015-06-05 46 views
12

ek açıklamanın sınıf değişkenleri ve sabitleri erişmek için nasıl böyle bir sınıf var: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; 

Ben sert koduna değerleri "male" ve "female". Böyle bir şey yapmak mümkün mü?

seçimler = {öz :: GENDER_MALE, kendini :: GENDER_FEMALE}

+3

Kullanım 'callback' seçeneği yerine ve yöntemde size sabitler dizisi döndürebilir. –

+0

iyi bir alternatif gibi görünüyor. teşekkürler – sonam

cevap

21

Bu Doctrine2 Annotation Reader (Constants) bir özelliğidir.

Sen çözeltisi:

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

Örneğinizde, diğer sınıflara bağlanıyorsanız, kullanım ifadesini eklemeniz gerektiğine dikkat edilmelidir. – webDEVILopers

+0

Örneğinizi @ZhukV denediniz mi? Sadece bir kullanım ifadesi ve bir dış sınıf denedim ve ne yazık ki sabitler kullanılmıyor. Belki Doktrin ek açıklamaları @Assert ile çalışmaz? İfadelerle birlikte çalışıyor gibi görünüyor: http://stackoverflow.com/a/34479472/1937050 – webDEVILopers

+0

@webDEVILopers, lütfen doktrin ek açıklamaları ve symfony ifade dilini birleştirmeyin. Bu bileşenler, okuma/işlem ek açıklamaları için farklı mantık ve süreçlere sahiptir. Doktrin ek açıklamaları sadece metod/özellik/sınıftan VEYA SADECE açıklamaları okur! Symfony kısıtlamaları, kısıtlama sistemi ile herhangi bir mantıkla çalışabilir. – ZhukV