Symfony2 - 按用户输入搜索对象

时间:2017-03-24 11:16:33

标签: php symfony search doctrine twig

我尝试根据用户输入的字词搜索对象,但搜索结果总是空白。我知道查询是正确的,因为如果我对$ botanicalname的值进行硬编码,它就可以了。此外,我知道网址正在获取数据,因为当我搜索" Abies concolor"时,这里是网址:

" http://localhost:8000/searchresults?appbundle_shrubs[botanicalname]=Abies+concolor&appbundle_shrubs[commonname]=&appbundle_shrubs[phpreference]=&appbundle_shrubs[save]=&appbundle_shrubs[token]=SkM70kmkbx-50P-K5d_FUOnxhaZ4rsfrCnu-nb5WdQ"

我也尝试过post方法(" $ botanicalname = $ request-> request-> get(' botanicalname')")。

这是我的控制人员:

 /**
     * Lists all search results.
     *
     * @Route("/searchresults", name="shrubs_search_results")
     * @Method({"GET", "POST"})
     */
    public function SearchResultsAction(Request $request)
    {
        $botanicalname = $request->query->get('botanicalname');

        $repository = $this->getDoctrine()->getRepository('AppBundle:Shrubs');

        $query = $repository->createQueryBuilder('p')
            ->where('p.botanicalname = :botanicalname')
            ->setParameter('botanicalname', '%'.$botanicalname.'%')
            ->orderBy('p.commonname', 'ASC')
            ->getQuery();

        $shrubs = $query->getResult();

        return $this->render('shrubs/searchresults.html.twig', array(
            'shrubs' => $shrubs,
        ));
    }

2 个答案:

答案 0 :(得分:0)

可能需要转换您的查询,如下所示:

$query = $repository->createQueryBuilder('p');

$shrubs = $query->where($query->expr()->like('p.botanicalname',':botanicalname'))
        ->setParameter('botanicalname', '%'.$botanicalname.'%')
        ->orderBy('p.commonname', 'ASC')
        ->getQuery()
        ->getResult();

答案 1 :(得分:0)

问题在于我的html.twig页面。它不适用于twig语法{{form_widget(form.botanicalname)}}

它仅适用于标准HTML <input type="text" name="botanicalname">

相关问题