2015-10-26 7 views
12

पर विकल्प के माध्यम से गुज़रने के दौरान विकल्प त्रुटि मौजूद नहीं है, मुझे अपने buildForm विधि में से किसी एक रूप में एक विकल्प से गुज़रने का प्रयास करते समय निम्न त्रुटि मिलती है।नियंत्रक से एम्बेडेड सिम्फनी फॉर्म

विकल्प "numOfHoles" मौजूद नहीं है। परिभाषित विकल्प हैं: "क्रिया", "allow_extra_fields", "attr", "auto_initialize", "block_name", "by_reference", "cascade_validation", "compound", "बाधाएं", "csrf_field_name", "csrf_message", " csrf_protection "," csrf_provider "," csrf_token_id "," csrf_token_manager "," data "," data_class "," अक्षम "," blank_data "," error_bubbling "," error_mapping "," extra_fields_message "," legisl_data "," इरादा " , "invalid_message", "invalid_message_parameters", "लेबल", "label_attr", "label_format", "मैप किया गया", "max_length", "विधि", "पैटर्न", "post_max_size_message", "property_path", "read_only", " आवश्यक "," translation_domain "," trim "," validation_groups "," वर्चुअल "।

मेरी नियंत्रक में:

// hardcoded here for brevity in this example 
$form = $this->createForm('crmpicco_course_row', $courseRow, array('numOfHoles' => 18)); 

में crmpicco_course_row फार्म वर्ग:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('name', 'text') 
     ->add('course', 'crmpicco_course', array('numOfHoles' => $options['numOfHoles'])) 
    ; 
} 

में crmpicco_course फार्म वर्ग:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    for ($i = 0; $i < $options['numOfHoles']; $i++) { 
     $builder->add($i, 'text', array('required' => 'false')); 
    } 
} 

/** 
* @return string name 
*/ 
public function getName() 
{ 
    return 'crmpicco_course'; 
} 

किसी को भी देख सकते हैं क्यों विकल्प numOfHoles नहीं है पी के माध्यम से झुकाव?

+0

आपको अपने फॉर्म बिल्डर के 'कॉन्फ़िगरेशनऑप्शन (विकल्प रीसोलवर $ रिज़ॉल्वर) 'के अंदर' setDefaults' या 'setRequired' फ़ंक्शन' का उपयोग करके 'numOfHoles' विकल्प' जोड़ना होगा। –

उत्तर

16

आप की खोज की है के रूप में, प्रत्येक प्रपत्र प्रकार का है:

$oForm = $this->createForm(new CompanyForm($numOfHoles)); 

तो फिर आप अपने buildForm इससे पहले कि यह कॉल करने की आवश्यकता विकल्पों की एक पूर्वनिर्धारित सूची। एक नया विकल्प जोड़ने के लिए थोड़ा समायोजन की आवश्यकता है। सिम्फनी विकास के दौरान वास्तविक विधि बदल गई है ताकि आप कुछ पुराने अवमूल्यन समाधानों में आ सकें।

सर्वाधिक अद्यतित का हल यहाँ पर चर्चा की है: http://symfony.com/blog/new-in-symfony-2-7-form-and-validator-updates#deprecated-setdefaultoptions-in-favor-of-configureoptions

तो मूल रूप से

public function configureOptions(OptionsResolver $resolver) 
{ 
    $resolver->setDefaults(array(
     'data_class' => 'AppBundle\Entity\Whatever', 
     'numOfHoles' => 0, 
    )); 

जोड़ने आपके प्रपत्र प्रकार के लिए और तुम जाना अच्छा होना चाहिए।

-1

ऐसा करने का प्रयास करें: तो

$numOfHoles = array('numOfHoles' => $options['numOfHoles'])); 

:

public function __construct($contacts)) 
{ 
$this->vnumOfHoles = $numOfHoles; 
} 
संबंधित मुद्दे