2013-07-02 2 views
0

Я пытаюсь использовать функцию для проверки подформы.Symfony2 Validator ExecutionContextInterface в каскаде

Подформа сохраняется в каскаде с родительским объектом с отношением OneToOne.

В верхней части моего лица:

use Doctrine\ORM\Mapping as ORM; 
use Symfony\Component\Validator\Constraints as Assert; 
use Symfony\Component\Validator\ExecutionContextInterface; 

На дне, функция:

public function verifyCommandeTypeValide(ExecutionContextInterface $context) 
{ 
    die('ok'); 

    $valide = false; 

    if($this->getLivraison() === true){ 
     $valide = true; 
     if(preg_match("/^[0-9]$/", $this->getLivraisondelais())){ 
      $context->addViolationAt('livraisondelais','Le délais de livraison ne doit contenir que des chiffres.'); 
     } 
     if($this->getLivraisonprice() === null){ 
      $context->addViolationAt('livraisonprice','Vous devez définir les frais de livraison.'); 
     } 
    } 

    if($this->getRetrait() === true){ 
     $valide = true; 
     if(preg_match("/^[0-9]$/", $this->getRetraitdelais())){ 
      $context->addViolationAt('retraitdelais','Le délais de retrait ne doit contenir que des chiffres.'); 
     } 
    } 

    if($valide === false){ 

     $context->addViolationAt('livraison','Vous devez définir une méthode de retrait pour le produit.'); 
    } 
} 

И validation.yml:

YOU\ProductBundle\Entity\CommandeType : 
    constraints: 
     - Callback: 
      methods: [verifyCommandeTypeValide] 

YOU\ProductBundle\Entity\Product: 
    properties: 
     titre: 
      - Length : 
       min :  3 
       max:  150 
       maxMessage :  "Le titre du produit ne dois pas dépasser 150 caractères." 
       minMessage :  "Le titre du produit dois faire plus de 3 caractères." 
      - NotBlank : 
       message :  "Vous devez donner un titre au produit." 

     cat1: 
      - NotNull : 
       message :  "Vous devez compléter la catégorie de niveau 1 au minimum." 

     images: 
      - Count : 
       min : 1 
       max : 5 
       minMessage :  "Vous devez mettre 1 photo au minimum." 
       maxMessage :  "Le nombre de photos est limité à 5." 

Если я пытаюсь использовать ограничения обратный вызов в первом слое формы, в: YOU \ ProductBundle \ Entity \ Product Эта работа, выполняется обратный вызов. Но обратный вызов не выполняется для: YOU \ ProductBundle \ Entity \ CommandeType

Кто-нибудь знает, как я могу использовать его с отношением OneToOne?

ТНХ

ответ

1

нужно добавить: 'cascade_validation' => правда,

public function setDefaultOptions(OptionsResolverInterface $resolver) 
{ 
    $resolver->setDefaults(array(
     'data_class' => 'YOU\ProductBundle\Entity\Product', 
     'cascade_validation' => true, 
    )); 
} 
Смежные вопросы