2015-04-16 72 views
2

我正在使用提交表單類型在我的FormType類(我希望它爲css類和按鈕標籤定製)。Symfony2 Forms GET提交字段類型 - 刪除'名稱'參數

由於是搜索,我決定使用GET,而不是默認的POST。我注意到,在Symfony2中,就是:

我試圖從刪除自動genarated HTML「名」 ATTR「按鈕/提交」 HTML標籤的控制器,在表單類型級,甚至在嫩枝模板,如通過重寫「名稱」 - 對於Symfony2來說似乎沒有任何工作,並且始終生成此按鈕的名稱=「submit」。

它有一種方法可以從提交按鈕中刪除這個HTML屬性,或者我只需要自己渲染整個提交按鈕,並從Form Type類中刪除它?

模板的搜索形式是很基本的,對Symfony2中什麼了不起的事:

{{ form_start(form) }} 
     <div> 
      {{ form_widget(form.target) }} 
     </div> 
     <div> 
      {{ form_widget(form.phrase) }} 
      {{ form_widget(form.submit) }} 
     </div> 
     {{ form_errors(form) }} 
    {{ form_end(form) }} 

而對於表單類型,我使用標準的提交:

$builder->add('submit', 'submit', array('label' => 'search', attr(name => null) ....) 

正如你看到的,這裏name屬性將explicilty設置爲null。 Symfony2以任何方式生成它,並給它提交一個「提交」值給這個'名字'attr。

唯一的問題是:我可以以某種方式讓Symfony2不會在HTML按鈕/提交標籤中生成「name」attr?如果Symfony2無法做到這一點,似乎唯一的辦法就是從Form Type類中簡單地刪除「submity」,並直接將該按鈕的HTML放在模板中,我試圖不這樣做(但如果它是不可能的,我將不得不)。

對我來說,這似乎是Symfony2的一個問題。提交類型在這裏是很新的東西,我可以想象,自動生成的「name」attr遵循與Symfony2中其他表單類型相同的規則 - 儘管它在HTML表單中確實不需要!

解決方案:所以,我最終完成了自己的渲染,並從Form Type中移除它。我仍然認爲Symfony2不應該爲這個特定的標籤生成'name' - 我看到從未有過的「name」attr被分配給任何形式的SUBMIT按鈕HTML標籤,這顯然不是必需的也不是所期望的。

+0

你應該張貼一些代碼,等等的形式和模板 – Splendonia

+0

好吧,我把代碼,但它只是一個標準的Symfony2的形式。主要觀點是「提交」表單類型,它在自動生成時似乎在Symfony2中放置了「名稱」屬性 - 在HTML表單中確實不需要它。 – forsberg

回答

1

我認爲有三種解決方案:

  1. 有沒有提交按鈕和形式之外創建按鈕的形式。然後用JS提交表單。

  2. 覆蓋負責生成提交按鈕的HTML內容的默認樹枝模板。

  3. 自己生成HTML內容,不使用那裏的名稱。

+0

嗯,我認爲你是不對的。正如我所提到的,我可以從「按鈕/提交」HTML標記(或使其爲空)中刪除「name」attr,然後它不會作爲GET參數傳遞到URL中。我在我的Symfony2應用程序中檢查了這個。 – forsberg

+0

對不起,誤會。我將編輯迴應。 –