要創建您想要的網址,您必須使用createNamedBuilder
來設置表格名稱,您只需將其保留爲空即可。''
。 要刪除_token
,您需要將csrf_protection
設置爲false。請關注csrf保護,以確保您知道關閉後會發生什麼情況。
將您的代碼更改爲以下內容應該會給您想要的結果。
$form = $this->get('form.factory')->createNamedBuilder('', 'form', $search, array(
'csrf_protection' => false,
))->setMethod('GET')
->add('q', 'text')
->add('search', 'submit')
->getForm();
這應該產生一個URL,如:
search?q=red+apple&search=
編輯:
如果你想擺脫&search=
,一個辦法是從submit
改變search
到button
。
->add('search', 'button')
這將需要JavaScript來提交您的表單。 這裏是jQuery的簡單的例子:
search?q=red+apple
要訪問GET瓦爾你把這樣的事情在你的控制器:
public function yourSearchAction(Request $request)
{
// your code ...
$form->handleRequest($request);
if ($form->isValid()) {
$getVars = $form->getData();
$q = $getVars['q'];
$page = $getVars['page'];
$billing = $em
//Do something
}
return //your code
}
只是
//This assumes one form and one button
$(document).ready(function(){
$('button').click(function(){
$('form').submit();
});
});
喜歡這將產生一個網址澄清如果您將page
添加到您的網址,您需要將其添加到您的表單中:
->add('page', 'text')
非常感謝您!這工作得很好。有什麼辦法可以從URL中刪除'&search ='? – AnchovyLegend
另外,如果我創建'href'就像'搜索?q = red + apple&search =&page = 2',我將如何訪問控制器中的'page' GET var?我很感激幫助。 – AnchovyLegend
我已編輯帖子回答這兩個問題。 – hcoat