2012-10-16 18 views
7

नियंत्रकSymfony2 सत्यापन काम नहीं करता है जब इकाई रिश्ते/संघों

public function indexAction(Request $request) 
{ 
    $user = $this->container->get('security.context')->getToken()->getUser(); 
    $owner = $user->getId(); 

    $first = new First(); 
    $first->setOwner($owner); 

    $second = new Second(); 
    $second->setOwner($owner); 
    $second->setFirst($first); 

    $form = $this->createForm(new SecondType(), $second); 

    if ($request->getMethod() == 'POST') { 
     $form->bindRequest($request); 

     if ($form->isValid()) { 
      $em = $this->get('doctrine')->getEntityManager(); 
      $em->persist($first); 
      $em->persist($second); 
      $em->flush(); 
     } 
    } 

    return $this->render('MySampleBundle:Home:index.html.twig', array(
     'form' => $form->createView(), 
    )); 

} 

ORM YAML

My\SampleBundle\Entity\First: 
    type: entity 
    table: first 
    id: 
     id: 
      type: integer 
      generator: { strategy: AUTO } 
    fields: 
     title: 
      type: string 
     date_created: 
      type: datetime 
     date_edited: 
      type: datetime 
     owner: 
      type: integer 
    lifecycleCallbacks: 
     prePersist: [ prePersist ] 
     preUpdate: [ preUpdate ] 
    oneToMany: 
     reviews: 
      targetEntity: Second 
      mappedBy: review 

My\SampleBundle\Entity\Second: 
    type: entity 
    table: second 
    id: 
     id: 
      type: integer 
      generator: { strategy: AUTO } 
    fields: 
     review: 
      type: string 
     date_created: 
      type: datetime 
     date_edited: 
      type: datetime 
     owner: 
      type: integer 
    lifecycleCallbacks: 
     prePersist: [ prePersist ] 
     preUpdate: [ preUpdate ] 
    manyToOne: 
     first: 
      targetEntity: First 
      inversedBy: reviews 
      joinColumn: 
       name: first_id 
       referencedColumnName: id 

फार्म/प्रकार

class FirstType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder->add('title', 'text'); 
    } 

    public function getDefaultOptions(array $options) 
    { 
     return array(
      'data_class' => 'My\SampleBundle\Entity\First', 
     ); 
    } 

    public function getName() 
    { 
     return 'first'; 
    } 
} 

class SecondType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder->add('first', new FirstType()); 
     $builder->add('review', 'textarea'); 
    } 

    public function getName() 
    { 
     return 'second'; 
    } 
} 

Validation.yml

My\SampleBundle\Entity\First: 
    properties: 
     title: 
      - NotBlank: ~ 
      - MinLength: 2 

My\SampleBundle\Entity\Second: 
    properties: 
     review: 
      - NotBlank: ~ 
      - MinLength: 14 

बनाया गया फॉर्म सामान्य रूप से काम करता है। हालांकि, केवल सत्यापन सामान्य रूप से काम नहीं करता है।

यदि यह व्यक्तिगत रूप से प्रदर्शन करता है, तो सत्यापन सामान्य रूप से काम करेगा।

$form = $this->createForm(new FirstType(), $first); 

हालांकि, अगर यह एक इकाई रिश्ते/संघों राज्य में है, पहले मान्यता पहले के शीर्षक संपत्ति एक चरित्र में work.The नहीं होगा पंजीकृत किया जाएगा।

मैं इसे प्राप्त करने के लिए कैसे प्रबंधित कर सकता हूं?

+0

पर्यावरण Symfony 2.1.2 है: आप इसे साथ ही मान्य बनाने के लिए first मैदान पर Valid constraint डाल करने के लिए की जरूरत है। – JIGEN

+0

बस symfony2.1 पर टैग किया गया है, अगर आपको –

उत्तर

14

सिम्फनी 2.1+ स्वचालित रूप से सभी एम्बेडेड ऑब्जेक्ट्स को मान्य नहीं करता है।

My\SampleBundle\Entity\Second: 
    properties: 
     first: 
      - Valid: ~ 
+0

दिमाग नहीं है, तो मुझे यह मिल गया! यह पूरी तरह से काम किया। सभी सलाह और धन्यवाद देने के लिए धन्यवाद। – JIGEN

+2

+1 महान उत्तर @elnur। संग्रह सत्यापन अनुभाग पर दस्तावेज़ में इसे देखना बहुत अच्छा होगा। शायद मैं इसे याद किया। – Mick

+0

+1, यह वास्तव में पुस्तक के सत्यापन अध्याय में बेहतर दस्तावेज किया जा सकता है – Rvanlaak

संबंधित मुद्दे