Symfony-形式可行,但要依靠

时间:2018-10-17 16:34:35

标签: forms symfony

我创建了一个名为“ 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

我试图在路由中添加默认参数,但是发生相同的错误。

++

1 个答案:

答案 0 :(得分:0)

函数参数$search立即被第一行$search = new Search();覆盖

为搜索词和搜索对象使用单独的变量名。