首页 > 解决方案 > 使用 Symfony 渲染 Twig 并将其插入另一个 Twig

问题描述

我想做的是编写一个返回 html 的端点,然后使用 Jquery 将其插入另一个 html,如下所示:

我有一个带有按钮的页面,当我单击它时,一个 ajax 请求被发送到我的控制器,我希望该控制器呈现一个 Twig 模板,然后以 html 形式返回它,然后返回我完成的 ajax 函数,使用 jquery ,将该请求中的 html 值插入到具有特定 id 的 dom 元素中。

我试过的是这个

<div class="" id="result"></div>

这就是我发送请求的方式

$.ajax({
    method: "POST",
    url: "{{ path('my_controller') }}",
}).done(function (res) {
    console.log("Res", res)
    $("#result").html(res);
}).

这是我的控制器代码

public function renderAction () {
    $params = [
        "message" => "Lorem ipsum wea"
    ];
    return $this->render('format.html.twig', $params);
}

format.html.twig还没有什么特别的,它只是打印message参数

它有点工作,但我的控制器给我发回一个错误树枝 html,上面写着

无法启动会话,因为第 0 行的“”已发送标头。

该错误页面插入到#result 元素所在的位置。

我究竟做错了什么?

标签: htmljquerysymfonytwig

解决方案


试试这个例子:

public function renderAction () {
$params = [
    "message" => "Lorem ipsum wea"
];
$view = $this->renderView('format.html.twig', $params);

     return new JsonResponse(array(
                'msg' => 'a msg here if you want',
                'view' => $view,
                'success' => true,
            ));
 }

 // js
 $("#result").html(res.view);

推荐阅读