मुझे विधि = जीईटी और एक स्वच्छ यूआरएल स्पेस के साथ Symfony2.1 रूपों का उपयोग करने में मदद की ज़रूरत है।सिम्फनी 2.1 विधि के साथ फॉर्म का उपयोग कर
मैं एक "फ़िल्टर" बना रहा हूं जिसे मैं यूआरएल में सेट करना चाहता हूं ताकि लोग अपने लिंक बुक कर सकें।
तो, बहुत बस कोड:
$form = $this->createFormBuilder($defaultData)
->add('from', 'date', array('required' => false, 'widget' => 'single_text', 'format' => 'dd.MM.yyyy'))
मैं प्रपत्र विजेट प्रस्तुत करना और सब ठीक है।
/app_dev.php/de/event?form%5Bfrom%5D=17.11.2012
इसका कारण यह है इनपुट नाम निश्चित रूप से है form[from]
तो यूआरएल अंतरिक्ष साफ करने के लिए, मैं अपने आप को एक बना दिया:
हालांकि जब मैं सबमिट करने पर बहुत बदसूरत GET पैरामीटर का उत्पादन विषय:
{% block widget_attributes %}
{% spaceless %}
id="{{ id }}" name="{{ id }}"{% if read_only %} disabled="disabled"{% endif %}{% if required %} required="required"{% endif %}{% if max_length %} maxlength="{{ max_length }}"{% endif %}{% if pattern %} pattern="{{ pattern }}"{% endif %}
{% for attrname,attrvalue in attr %}{{attrname}}="{{attrvalue}}" {% endfor %}
{% endspaceless %}
{% endblock widget_attributes %}
जहाँ मैं name="{{ id }}"
साथ name="{{ full_name }}"
बदल दिया।
यह अच्छी तरह से काम करता है - मेरी यूआरएल जगह नहीं है क्लीनर:
/app_dev.php/de/event?form_from=17.11.2012
मुझे लगता है मैं उस के साथ रह सकता है - हालांकि आदर्श from=xxx
बेहतर होगा। यह पहली और अधिक मामूली समस्या है। इस स्पष्ट है क्योंकि पैरामीटर "फार्म" नहीं रह गया है सेट है - -
दूसरी समस्या यह है कि मैं अब और प्रपत्र बाध्य करने के लिए नहीं मिल सकता है "form_from" बदल दिया गया है, लेकिन जब आप एक बाँध कर यह अभी भी फार्म की उम्मीद है []।
मुझे लगता है कि ठीक करने के लिए इस तरह की कोशिश की:
$fromDate = $this->get('request')->query->get('form_from', null);
$request->query->set('form', array('from' => $fromDate);
लेकिन वह काम नहीं करता। मुझे यह भी संदेह है कि मैं इस समय हैक का एक बड़ा छेद खोद रहा हूं।
तो सवाल यह है कि: क्या मुझे बस form%5Bfrom%5D
यूआरएल के साथ रहना चाहिए, या क्या यह सब करने के लिए एक बेहतर तरीका है (POST स्पष्ट रूप से उपयोग किए बिना)?
क्या फॉर्मटाइप का उपयोग सेवाओं के रूप में करते समय ऐसा कुछ करना संभव है?मुझे नहीं लगता कि आप उस संदर्भ में createNamedBuilder तक पहुंच सकते हैं और FormType :: getName() {return '' का उपयोग कर सकते हैं; } फॉर्मटाइप को सेवा के रूप में संदर्भित करने वाली समस्याओं का कारण बनता है। – caponica
बेशक आप createNamedBuilder() तक पहुंच सकते हैं, आपको केवल फॉर्म फैक्ट्री तक पहुंच प्राप्त करने की आवश्यकता है :) –
'$ builder-> getFormFactory()' ... कौन जानता था? धन्यवाद! – caponica