访问控制器中的变量并渲​​染

I have on my form template new.html.twig a select where all the elements of an entity are loaded ($categories).

Controller

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(),
    ));
}

Select filter that serves to make a search.

Select in my twig template that displays all categories obtained from the query.

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>

JS in my twig template that detects changes in select option to make a new query and retrieve records from the selected option.

JS code

$('#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');
});

The result of the new query is done in the playlist_category route is assigned to another select this in my twig template with the append method.

<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>

This select load other options, but the other select is used to filter options to prevent all options be loaded.

My problem is that when I try to send the form with any of the options obtained from the search, I get an error that the variable categories does not exist in my template twig new.html.twig.

Then, as the method createAction, also conducts a rendering of the template new.html.twig also add the variable $ categories there.

Controller

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(),
    ));
}

But when complete the form, having chosen an option of select which return the search, instead of addressing the playlist_show route, directs me to the path /create with the form new.html.twig.