원하는 URL을 만들려면 으로 그냥두면 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=
제거하려는 경우, 하나 개의 방법이 button
에 submit
에서 search
을 변경하는 것입니다.
->add('search', 'button')
이렇게하면 javascript가 양식을 제출해야합니다. 그냥
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
}
: 당신이 당신의 컨트롤러 같은 것을 넣어 바르
search?q=red+apple
가 GET에 액세스하려면 다음과 같이 이것은 URL을 생성합니다
//This assumes one form and one button
$(document).ready(function(){
$('button').click(function(){
$('form').submit();
});
});
: 여기 JQuery와 간단한 예입니다 URL에 page
을 추가하는 경우 명확히하려면 양식에 추가해야합니다.
->add('page', 'text')
대단히 감사합니다! 이것은 꽤 잘 돌아갔다. URL에서'& search ='를 제거 할 방법이 있습니까? – AnchovyLegend
또한 'search'와 같은'href'를 만들면?q = red + apple & search = & page = 2', 컨트롤러에서'page' GET var에 어떻게 접근 할 수 있습니까? 도움에 감사드립니다. – AnchovyLegend
나는이 두 가지 질문에 답하기 위해 게시물을 편집했다. – hcoat