2013-07-04 4 views
14

मैं नीचे कुछ ऐसे स्वरूप में:सिम्फोनी में प्रपत्र फ़ील्ड मान बदलने के लिए 2

class ItemType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      // ... 
      ->add('tags','text',array(
       'required' => false, 
       'attr' => array('name' => 'tags'), 
       'mapped' => false)) 
     ; 
    } 

    public function setDefaultOptions(OptionsResolverInterface $resolver) 
    { 
     $resolver->setDefaults(array(
      'data_class' => 'MyBundle\ItemBundle\Entity\Item', 
      'cascade_validation' => true, 
     )); 
    } 
} 

मेरे कार्रवाई संपादित

public function editAction(Request $request, $id) { 
    $em = $this->getDoctrine()->getManager(); 
    $entity = $em->getRepository('MyBundleItemBundle:Item')->find($id); 
    $form = $this->createForm(new ItemType(), $entity); 
    //$form->get('tags')->setValue('test text'); 
    // ^- this is what i would like to do -^ 
    // ... 
} 

मैं एक आइटम को संपादित किया हूँ, वहीं मैं प्रपत्र फ़ील्ड मान कैसे बदल सकता हूँ इसे प्रस्तुत करने से पहले नियंत्रक के अंदर?

+1

आप में कर सकते हैं अपने मामला: $ फॉर्म-> प्राप्त करें ('फील्डनाम') -> setData ('my_value'); यह सिम्फनी 3 के लिए भी काम करता है। – TodStoychev

उत्तर

51

आप इस तरह Symfony में प्रपत्र फ़ील्ड्स पर डेटा सेट करना, setData() उपयोग कर सकते हैं:

$form = $formBuilder->getForm(); 

$form->get('firstname')->setData('John'); 
+0

जोड़ा है क्या आप मुझे एक उदाहरण प्रदान कर सकते हैं? – dextervip

+0

मैंने अपना जवाब अपडेट कर दिया है! –

+1

मैं सिर्फ यह कहना चाहता हूं कि यह विधि मेरे लिए काम कर रही है जब मैं इकाई को फॉर्म प्रदान नहीं करता हूं, अन्यथा यह http://stackoverflow.com/questions/13249485/symfony2-setting-the-value-of-a- फॉर्म-फील्ड-आउट-द-फॉर्म-इन-कंट्रोल/21039877 # 21039877 –

1
class ItemType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ... 
      ->add('tags','text',array(
       'required' => false, 
       'attr' => array('name' => 'tags','value'=>'newvalue'), 
       'mapped' => false)) 
     ; 
    } 

    public function setDefaultOptions(OptionsResolverInterface $resolver) 
    { 
     $resolver->setDefaults(array(
      'data_class' => 'MyBundle\ItemBundle\Entity\Item', 
      'cascade_validation' => true, 
     )); 
    } 
} 
+0

मुझे इसे नियंत्रक कार्रवाई – dextervip

+0

के अंदर बदलने की आवश्यकता है जहां नियंत्रक कार्रवाई है? – Ron

+0

मैंने अभी इसे – dextervip

3

आप नियंत्रक में टैग मूल्य बदल सकते हैं:

$request = $this->get('request'); 
    if ($request->getMethod() == 'POST') 
{ 
    $form->bind($request); 
    if $form->isValid()) 
    { 
     $entity->setTags('test'); 
     //persist ... 
    } 
} 
+1

'$ form-bind()' सिम्फनी 2.3 के बाद अप्रचलित है और 3.0 में इसे निकालने की उम्मीद है। किसी को नए संस्करणों में '$ form-> handleRequest ($ अनुरोध) 'का उपयोग करना चाहिए। – tftd

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