Symfony函数搜索与查询生成器

时间:2016-11-09 15:31:24

标签: symfony doctrine twig query-builder

我想通过查询构建器

创建一个搜索电影的功能
I have a table Movie:

     1. Id
     2. Titre
     3. Content

我有课 MovieRepository

class MovieRepository extends EntityRepository
{
    public function myFindAll()
        {
        return $this->createQueryBuilder('a')
        ->getQuery()
        ->getResult();
        }


    public function getSearchMovies($movie){


            $qb = $this->createQueryBuilder('m')
                            ->where('m.title LIKE :title')
                                ->setParameter('title', '%' . $movie->getTitle() . '%')
                                    ->orderBy('m.title', 'DESC')
                                        ->getQuery();


    }   
}

我还有 MovieController

public function indexAction()
        {
            $movie = new Movie;
            $form = $this->createForm(new SearchMovieType(), $movie);

            $request = $this->getRequest();
            if ($request->getMethod() == 'POST') {
                $form->bind($request);
                $movies = $this->getDoctrine()
                        ->getManager()
                            ->getRepository('AreaDownloadBundle:Movie')
                                ->getSearchUsers($movie);

                return $this->render('AreaDownloadBundle:Download:index.html.twig', array('form' => $form->createView(),array('movies' => $movies)));
            } else {

                $movies = $this->getDoctrine()
                            ->getManager()
                                ->getRepository('AreaDownloadBundle:Movie')
                                    ->myFindAll();

                return $this->render('AreaDownloadBundle:Download:index.html.twig',array('form' => $form->createView(), 'movies' => $movies));
            }
        }

SearchMovieType

class SearchMovieType extends AbstractType
{
        /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder

            ->add('title','text', array('required' => false, ))
                ;
    }

我有 index.hml.twig ,可以用搜索栏显示电影:

{% extends "::template.html.twig" %}
{% block body %}
<form action="{{ path('area_download_index') }}"  method="post">

    <div id="bar">          
        {{ form_widget(form.title) }}
        <input type="submit" value="Chercher"> 
        {{ form_rest(form) }}
    </div>
</form> 

    {% for movie in movies %}
       {{ movie.title }}
       {{ movie.content }} 
    {% endfor %}
{% endblock %}

当我抓住电影的标题时,他向我发送了这个错误

变量&#34;电影&#34; AreaDownloadBundle中不存在:下载:第12行的index.html.twig

1 个答案:

答案 0 :(得分:1)

不应将其作为评论发布,而应将其作为正确格式的答案发布;像这样:

return $this->render(
    'AreaDownloadBundle:Download:index.html.twig',
    array(
        'form' => $form->createView(),
        'movies' => $movies
    )
);

这绝对应该解决问题!