सबमिट करते समय मैं एक फॉर्म सबमिट कर रहा हूं और इसे सिलीयस ResourceController
में रखता हूं जो फ़ॉर्म सबमिट करता है और इसे मान्य करता है।सिम्फनी 2 फॉर्म त्रुटि "इस फ़ॉर्म में अतिरिक्त फ़ील्ड नहीं होना चाहिए।" फॉर्म
<tr>
<form method="post" action="{{ path('backend_course_row_update', {
'courseeId' : course.id, 'id' : row.id }) }}" novalidate>
{{ form_widget(form.channel) }}
{{ form_widget(form.name) }}
{% for size in form.sizes %}
{{ form_row(size) }}
{% endfor %}
{{ form_row(form._token) }}
<td align="right" style="width: 140px;">
<button class="btn btn-primary" type="submit">
<i class="glyphicon glyphicon-save"></i>Save
</button>
</td>
</form>
</tr>
"फार्म" यहाँ एक CourseGuideRowType
है, जो इस तरह दिखता है:
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
for ($i = 0; $i < $options['numColumns']; $i++) {
$builder->add($i, 'text', array('required' => 'false'));
}
$builder->addEventListener(
FormEvents::PRE_SUBMIT,
function (FormEvent $event) use ($options) {
$form = $event->getForm();
for ($i = 0; $i < $options['numColumns']; $i++) {
if (empty($form->get($i)->getData())) {
$form->remove($i, 'text');
}
}
}
);
}
:
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('channel', 'channel_choice', array(
'required' => false
))
->add('name', 'text')
->add('sizes', 'course_guide_row_sizes', array('numColumns' => $options['numColumns']))
;
}
CourseGuideRowSizesType
तो इस तरह दिखता है
यह सीटू रूप है
हालांकि, जब मैं फॉर्म जमा करता हूं और इस तरह की त्रुटियों को डंप करता हूं:
$form->submit($request, !$request->isMethod('PATCH'))->getErrors()
मैं:
"This form should not contain extra fields."
#messageParameters: array:1 [▼
"{{ extra_fields }}" => "0", "1", "2", "3", "4", "5"
]
-extraData: array:6 [▼
0 => "36"
1 => "38"
2 => "40"
3 => "42"
4 => "44"
5 => "46"
]
"अतिरिक्त डेटा" "आकार" क्षेत्रों है।
क्या मैं यहां कुछ गड़बड़ कर रहा हूं?
जून 2017 संपादित करें: अब आप इस त्रुटि को दबाने के लिए 'allow_extra_fields' का उपयोग कर सकते हैं। http://symfony.com/doc/current/reference/forms/types/form.html#allow-extra-fields
आम तौर पर त्रुटि तब फेंक दी जाती है जब उपयोगकर्ता द्वारा सबमिट किए गए डेटा में फॉर्म में परिभाषित किए गए अधिक इनपुट होते हैं। सिम्फनी में एक प्रकार का बनाया गया है जो पहले से ही करता है जो आप मैन्युअल रूप से करने की कोशिश कर रहे हैं: http://symfony.com/doc/current/reference/forms/types/collection.html। – Karolis
सबसे अच्छा समाधान भी नहीं है, लेकिन आप विकल्प रिज़ॉल्वर पर 'allow_extra_fields' => true' सेट करके अतिरिक्त फ़ील्ड को भी अनुमति दे सकते हैं। – nakashu
नोट: allow_extra_fields विकल्प सिम्फनी v2.6 – Munir