2016-03-29 33 views
3

ben FosRestBundleFosRestBundle YAMA eylem + varlık alanı ile NotBlank kısıtlaması

/** 
* @ParamConverter("updatedRecord", converter="fos_rest.request_body") 
*/ 
public function patchAction(PowerDNSDomain $domain, PowerDNSRecord $record, PowerDNSRecord $updatedRecord, ConstraintViolationListInterface $validationErrors) 
{ 
    if ($validationErrors->count() > 0) { 
     return $this->handleBodyValidationErrorsView($validationErrors); 
    } 

    $record->setName($updatedRecord->getName()) 
      ->setContent($updatedRecord->getContent()) 
      ->setTtl($updatedRecord->getTtl()) 
      ->setPrio($updatedRecord->getPrio()); 

    $this->get('manager.dns')->saveRecord($record); 

    return $this->view($record); 
} 

bir çalışma PATCH eylemi yaptık

/** 
* @var int 
* 
* @ORM\Column(name="id", type="integer", nullable=false) 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="IDENTITY") 
*/ 
private $id; 

/** 
* @var string 
* 
* @ORM\Column(name="name", type="string", length=255, nullable=true) 
* @Assert\Regex("/^(([[:alnum:]-_]+(\.[[:alnum:]-_]+)*)|(\*))$/u") 
*/ 
private $name; 

/** 
* @var string 
* 
* @ORM\Column(name="content", type="string", length=64000, nullable=true) 
* @Assert\NotBlank 
* @Assert\Length(max="64000") 
*/ 
private $content; 

bir NotBlank kısıtlaması ile content alanı var bir Dns varlık var girdisini güncelleştirmeye çalışıyorum content alanını değiştirmedenbenim için aşağıdaki hatayı alıyorumkısıtlaması.

"hata"

{ : "validation_failed", "ERROR_DESCRIPTION": "Veri doğrulama başarısız aşağıdaki hataları kontrol edin.", "VALIDATION_ERRORS": { "content": [ "Bu değer olamaz null ol. " ] } }

Bu NotNull kısıtlaması ile aynı yapıyor.

content alanını değiştirmeden Dns girişini PATCH yapmaya çalışıyorum.

Kısıtlılığımı varlık içinde tutmak mümkün mü yoksa başka bir şekilde mi kullanmalıyım?

cevap

1

INSERT adresindeki kısıtlamanız için validation groups ile anlaşma yapabilir ve UPDATE numaralı telefonu atlayabilirsiniz.

Örnek:

/** 
* @ParamConverter("updatedRecord", converter="fos_rest.request_body", options={"validator"={"groups"={"new"}}}) 
*/ 

fazla Request body listener bakın: yöntem yeni bir giriş oluşturma durumunda

/** 
* @var string 
* 
* @ORM\Column(name="content", type="string", length=64000, nullable=true) 
* @Assert\NotBlank(groups={"new"}) 
* @Assert\Length(max="64000") 
*/ 
private $content; 

Sonra, @ParamConverter açıklama içinde new doğrulama grubu ayarlayın.