2016-03-22 14 views
1

Bir FOS REST API üzerinde çalışıyorum. Altta yatan modellerde, veri mağazasına uygun formu temsil eden Kısıtlamaları tanımlamak istiyorum, örneğin ABD Telefon Numarası tam olarak 10 basamaklı olmalıdır. bir tür olması olurdu bu uygulamayaSymfony 3 + FOS REST Bundle: Doğrulamadan önceki değerleri normalleştirin

{ 
    "phone": "603-988-6521" 
} 

ideal yolu: Ben örneğin bir telefon numarası olarak biçimlendirilmiş liberal değerleri kabul edebilmek istiyorum Öte yandan

/** 
* @var string 
* 
* @Assert\NotBlank(message="Phone is required.") 
* @Assert\Regex(message="Exactly 10 digits are required.", pattern="/^\d{10}$/") 
*/ 
private $phone; 

seçim alanlarının onaylamadan önce tüm rakamlara vb. dönüştürülebileceği "dönüşüm" veya "normalleştirme" aşaması.

Bunu FOST REST paradigması ve Symfony 3'te başarmanın en iyi yolu ne olurdu?

cevap

1

Bunun çok basit olduğu ortaya çıkıyor. Modelinizin gerçek ayarlayıcılarında gerekli her türlü normalleştirmeyi yapabilirsiniz. Özellik yansımasını kullanmak yerine JMS Serializer'ı ayarlayıcıları kullanmak için yapılandırmanız yeterlidir. Ek açıklamalar içeren Örnek: sınıftaki tüm alanlar için kullanılabilecek daha da iyi bir alternatif buldum

/** 
* @var string 
* 
* @JMS\Accessor(getter="getPhone", setter="setPhone") 
* @Assert\Regex(message="Exactly 10 digits are required.", pattern="/^\d{10}$/") 
*/ 
private $phone; 

/** 
* @param string 
*/ 
public function setPhone($phone) 
{ 
    if ($phone === null) { 
     $this->phone = null; 
     return; 
    } 

    $this->phone = preg_replace('/[^0-9]/', '', $phone); 
} 
+1

: '' '/ ** @AccessType ("public_method") * /' '' –

+0

güzel. teşekkür ederim Ivan. –