2012-03-01 8 views
9

मुझे आश्चर्य है कि एक से एक रिश्ते में सभी क्षेत्रों को प्राप्त करने के लिए किसी इकाई का उपयोग करके एक फॉर्म बनाना संभव है। स्पष्टीकरण के लिए:स्वचालित रूप से इकाई (एक से एक रिश्ते) का उपयोग करके एक फॉर्म बनाएं

मेरे पास User.php इकाई (सभी स्पष्ट फ़ील्ड, नाम, उपनाम, शैली, आदि) और Address.php इकाई है। मैं चाहता हूं कि पता इकाई के गुणों को एक-एक करके बिना किसी फॉर्म को पूरा फॉर्म बनाना और इसे डेटाबेस में उचित रिश्ते से बचाएं।

यह मैं (मैं कोड एक छोटा सा trimed है) क्या कोशिश की है है, लेकिन स्पष्ट रूप से सही तरीका नहीं है:

उपयोगकर्ता इकाई:

class User implements UserInterface { 

/** 
* @ORM\Id 
* @ORM\Column(type="integer") 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 


/** 
* @ORM\Column(type="string", length=100, nullable=TRUE) 
*/ 
protected $firstName; 

/** 
* @ORM\Column(type="string", length=200) 
* @Assert\NotBlank() 
*/ 
protected $lastNames; 

/** 
* @ORM\OneToOne(targetEntity="Capsa\Bundle\ClubCommonBundle\Entity\Address") 
*/ 
protected $address; 

पता वर्ग

class Address { 

/** 
* @ORM\Id 
* @ORM\Column(type="integer") 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 

/** 
* @ORM\Column(type="string", length=100, unique=TRUE) 
* @Assert\NotBlank() 
*/ 
protected $streetName; 

/** 
* @ORM\Column(type="string", length=50) 
*/ 
protected $streetNumber; 

पर्चा बिल्डर:

public function buildForm(FormBuilder $builder, array $options) { 
    $builder->add('login', 'text') 
      ->add('password', 'password') 
      ->add('firstName', 'text', array("required" => FALSE)) 
      ->add('lastNames', 'text') 
      ->add('address', 'entity', array(
       'class' => 'CapsaClubCommonBundle:Address', 
       'property'=>'streetName' 
      )); 
} 

जो केवल फ़ील्ड स्ट्रीट को तालिका का नाम देता है और इसे एक सूची में रखता है।

उत्तर

0

एंटीटी फ़ील्ड प्रकार के बजाय Collection form type का उपयोग करने का प्रयास करें - this tutorial देखें।

+19

अंततः मैंने पूरी वस्तु को लोड करने के लिए इसका उपयोग किया: '-> जोड़ें (' पता ', नया पता टाइप()); निश्चित रूप से, पता टाइप टाइप – Manu

+3

@ मॅनू आपकी टिप्पणी वास्तव में उत्तर है - कम से कम वह मेरे लिए काम किया धन्यवाद। –

+2

मनु के यहां टिप्पणी के बाद नया वाक्यविन्यास है: '' '-> जोड़ें ('पता', पता टाइप टाइप करें)' '' – 0x1gene

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