访问控制器中的变量并呈现

时间:2015-07-16 20:30:29

标签: php jquery symfony

我的表单模板new.html.twig上有一个选项,其中加载了实体的所有元素($categories)。

控制器

public function newAction(Request $request){

    $entity = new Playlist();
    $form   = $this->createCreateForm($entity);

    $em = $this->getDoctrine()->getManager();

    $categories = $em->getRepository('PublicartelAppBundle:Category')->getAllCategories();**

    return $this->render('PublicartelAppBundle:Playlist:new.html.twig', array(
        'categories'  => $categories,
        'entity'      => $entity,
        'form'        => $form->createView(),
    ));
}

选择用于搜索的过滤器。

在我的树枝模板中选择,该模板显示从查询中获取的所有类别。

new.html.twig

<div class="form-group">
    <label for="publicartel_appbundle_category_name">Search for category: </label>
    <select id='selectCategory' class="form-control select2">
        {% for category in categories %}
            <option>
                {{ category.name }}
            </option>
        {% endfor %}
    </select>
</div>

我的twig模板中的JS,用于检测select选项中的更改以进行新查询并从所选选项中检索记录。

JS代码

$('#selectCategory').on('change', function () {
    var optionSelect = $(this).val();
    $.post("{{path('playlist_category') }}", {category: optionSelect}, 
    function (filterContent) {
        for (var content in filterContent.category_result) {
            for (var name in filterContent.category_result[content]) {
                var result = filterContent.category_result[content][name];
                console.log(result);

                $('#playlist_content_name').append('<option>' + result + '</option>');
            }
        }
    }, 'json');
});

新查询的结果在playlist_category路由中分配给另一个路由,并在我的twig模板中使用append方法选择此项。

<div class="form-group">
    <label for="publicartel_appbundle_area_name">Content</label>
    {{ form_widget(form.items.vars.prototype.content, { 'id': 'playlist_content_name', 'full_name': '', required: false, 'attr': {'class': 'form-control select2'}}) }}
</div>

此选择加载其他选项,但另一个选项用于过滤选项以防止加载所有选项。

我的问题是,当我尝试使用从搜索中获得的任何选项发送表单时,我收到一个错误,即模板中categories变量new.html.twig new.html.twig }

然后,作为方法createAction,还进行模板public function createAction(Request $request){ $entity = new Playlist(); $form = $this->createCreateForm($entity); $form->handleRequest($request); $em = $this->getDoctrine()->getManager(); if ($form->isValid()) { // $em = $this->getDoctrine()->getManager(); $em->persist($entity); $em->flush(); return $this->redirect($this->generateUrl('playlist_show', array( 'id' => $entity->getId()))); } $categories = $em->getRepository('PublicartelAppBundle:Category')->getAllCategories(); return $this->render('PublicartelAppBundle:Playlist:new.html.twig', array( 'categories' => $categories, 'entity' => $entity, 'form' => $form->createView(), )); } 的渲染,同时在那里添加变量$ categories。

控制器

playlist_show

但是,在完成表单后,选择了返回搜索的select选项,而不是寻址/create路径,将我引导至new.html.twig形式的路径Date Price 01/07 10 02/07 20 Empty 30 03/07 40

0 个答案:

没有答案