method=GETとクリーンURLスペースでSymfony2.1フォームを使用するためのヘルプが必要です。
リンクをブックマークできるように、URLに設定したい「フィルター」を作成しています。
したがって、非常に単純なコード:
$form = $this->createFormBuilder($defaultData)
->add('from', 'date', array('required' => false, 'widget' => 'single_text', 'format' => 'dd.MM.yyyy'))
フォームウィジェットをレンダリングしましたが、すべて問題ありません。
ただし、フォームを送信すると、非常に醜いGETパラメーターが生成されます。
/app_dev.php/de/event?form%5Bfrom%5D=17.11.2012
これは、入力名がもちろんform[from]
そこで、URLスペースをクリーンアップするために、私は自分自身をテーマにしました。
{% 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="{{ full_name }}"
ましたname="{{ id }}"
。
これはうまく機能します-私のURLスペースはよりクリーンです:
/app_dev.php/de/event?form_from=17.11.2012
私はそれと一緒に暮らすことができたと思います-理想的from=xxx
にはより良いでしょうが。それが最初の、そしてもっと小さな問題です。
2番目の問題は、フォームをバインドできなくなったことです。これは、パラメーター「form」が設定されていないため明らかです。「form_from」が代わりに使用されますが、バインドを実行すると、form[]が必要になります。 。
私はこれを次のように修正しようとしました:
$fromDate = $this->get('request')->query->get('form_from', null);
$request->query->set('form', array('from' => $fromDate);
しかし、それはうまくいきません。また、私は現在、ハッキングの巨大な穴を掘っているのではないかと思います。
したがって、問題は次のとおりですform%5Bfrom%5D
。URLをそのまま使用する必要がありますか、それとも(POSTを明らかに使用せずに)これらすべてを実行するためのより良い方法がありますか?