我创建了一个名为“ searchType”的表单,在Controller中,我称此表单。在该方法的路径中,有一个开始日期,一个结束日期和一个关键字。
路线的最后一个参数是可选的,因此,我的路线如下:
/**
* @Route({
* "en": "/get/list/{end}/{begin}/{keyword}"
* }, name="get_list")
*/
然后我的控制器方法如下:
public function entreprise_annonce_list(Request $request, $begin='', $end='', $keyword='')
{
$search = new Search();
if(strlen($begin)>0){
$search->setBegin(\DateTime::createFromFormat("d.m.Y",$begin));
}
else{
$date = \DateTime::createFromFormat("d.m.Y","01.10.2018");
$search->setBegin($date);
}
if(strlen($end)>0){
$search->setEnd(\DateTime::createFromFormat("d.m.Y",$end));
}
else{
$search->setEnd(new \DateTime());
}
if(strlen($keyword)>0){
$search->setSearch($keyword);
}
$form = $this->createForm(SearchType::class, $search);
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()){
return $this->redirect(
$this->generateUrl(
'get_list',
array(
'begin'=>$search->getBegin()->format('d.m.Y'),
'end'=>$search->getEnd()->format('d.m.Y'),
'search'=>$search->getSearch()
)
)
);
}
//...
}
因此,如果路线与之匹配:
1)正常工作:http://localhost:8000/get/list
2)工作正常:http://localhost:8000/get/list/17.10.2018/01.10.2018
3)正常工作:http://localhost:8000/get/list/17.10.2018/01.10.2018/test
如果路线是最后一条路线(否3),并且我在表单中删除了关键字(“ test”),则该路线不起作用。标题中出现错误。
如我所见,错误来自
$form->handleRequest($request);
我了解为什么会发生错误,但是我不知道如何纠正它。 您能帮我吗,):p
我试图在路由中添加默认参数,但是发生相同的错误。
++
答案 0 :(得分:0)
函数参数$search
立即被第一行$search = new Search();
覆盖
为搜索词和搜索对象使用单独的变量名。