Изменить переменную шаблона веток с помощью AJAX - PullRequest
0 голосов
/ 21 сентября 2018

Я пытаюсь перезагрузить часть моего html с новым значением, которое я получил, используя AJAX.

Есть цикл

{% for client in clients %} 

, и яполучил новый набор клиентов, использующих AJAX:

        $search = $request->request->get('data');

        $clients=$this->getDoctrine()->getRepository(
        Client::class)->findBy(array('name'=>$search));

        $response = new JsonResponse();
        $response->setStatusCode(200);
        return $response->setData(['search' => $clients ]);

Я пытаюсь изменить клиентов с помощью вновь полученных данных.

Есть ли способ сделать это?Или мне стоит попробовать другую технику?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Вы не можете изменить значение clients через AJAX, потому что этот шаблон уже обработан.Однако вы можете создать отдельный шаблон ветки, например:

{# loop.html.twig #}
{% for client in clients %}
.. your code
{% endfor %}

Затем включите его в свой шаблон следующим образом:

<div id="client-loop-container">
    {% include 'loop.html.twig' %}
</div>

Итак, в вашем контроллере ajax:

$clients=$this->getDoctrine()->getRepository(
        Client::class)->findBy(array('name'=>$search));

$template = $this->render('yourTemplate.html.twig')->getContent();
$response = new JsonResponse();
$response->setStatusCode(200);
return $response->setData(['template' => $template ]); 

Наконец, в вашем ajax у вас должно быть что-то вроде этого:

$.ajax({
    type: "POST",
    success: function(response) {
        response = JSON.parse(response);
        $("div#client-loop-container").html(response.template);    
    }
});
0 голосов
/ 21 сентября 2018

вы не могли этого сделать, потому что ветка отображается на стороне сервера.вам нужно будет обновить HTML, сгенерированный {% for client in clients%}, используя javascript

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...