メソッド= GETとクリーンなURLスペースでSymfony2.1フォームを使用する際に助けが必要です。Symfony2.1メソッドでフォームを使用するGET
URLに設定したい "フィルタ"を作成して、リンクをブックマークすることができます。
ので、非常に簡単コード:
$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]
だからURLスペースをきれいにするために、私は自分自身構成されています。私は、フォームを送信する際
はしかし、それは非常に醜い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 }}"
を置き換えます。
これがうまく機能 - 私のURL空間はきれいです:
/app_dev.php/de/event?form_from=17.11.2012
私はそれと一緒に暮らすことができると思います - 理想的が良いだろうが。それは最初の、より小さな問題です。
第二の問題は、私はもうバインドするフォームを得ることができないということである - 「form_from」は、それを交換しましたが、あなたがバインドを行うとき - パラメータ「フォーム」は、もはや設定されているので、これは明らかではありませんそれはまだフォーム[]を期待しています。
私はこのようなことを修正しようとした:
$fromDate = $this->get('request')->query->get('form_from', null);
$request->query->set('form', array('from' => $fromDate);
しかし、それは動作しません。私はまた、瞬間に巨大な穴を掘っていると思う。
私はちょうどform%5Bfrom%5D
URLで暮らしているのですか、それとも(POSTを明示的に使用せずに)これを行うための良い方法がありますか?
FormTypesをサービスとして使用する場合、このようなことは可能ですか?私はあなたがそのコンテキストでのcreateNamedBuilderにアクセスでき、FormType :: getName(){return ''; }は、サービスとしてFormTypeを参照する問題を引き起こします。 – caponica
もちろん、createNamedBuilder()にアクセスできます。フォームファクトリにアクセスする必要があります:) –
'$ builder-> getFormFactory()' ...誰が知っていましたか?ありがとう! – caponica