如何在Symfony2中将json渲染成树枝

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Symfony2中将json渲染成树枝相关的知识,希望对你有一定的参考价值。

问题是如何将json传递给twig来渲染模板。我试图用JsonResponse对象传递一个json,但我没有找到渲染模板的方法。

TarifasController.php

<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace AppBundleControllerAdmin;

use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentHttpFoundationJsonResponse;
use SymfonyBundleFrameworkBundleControllerController;
use SensioBundleFrameworkExtraBundleConfigurationMethod;
use SensioBundleFrameworkExtraBundleConfigurationRoute;
use SensioBundleFrameworkExtraBundleConfigurationSecurity;
use AppBundleEntityTarifa;

/**
 *
 * @Route("/tarifas")
 */
class TarifasController extends Controller
{

    /**
     * @Route("/", name="tarifa_index")
     */
    public function indexAction()
    {
        $entityManager = $this->getDoctrine()->getManager();
        $tarifas = $entityManager->getRepository('AppBundle:Tarifa')->findAll();

        return $this->render('admin/tarifas/index.html.twig', array('tarifas' => $tarifas));
        //return new JsonResponse(array('json_tarifas' => json_encode($tarifas)));

    }
}

index.html.twig

{% extends 'admin/layout.html.twig' %}

{% block body_id 'admin_post_show' %}

{% block main %}

    <h1>{{ 'label.project_list'|trans }}</h1>

    <table id="tarifas_index" class="table table-striped">
        <thead>
        <tr>
            <th>{{ 'Id' }}</th>
            <th><i class="fa fa-user"></i> {{ 'label.title'|trans }}</th>
            <th><i class="fa fa-calendar"></i> {{ 'label.summary'|trans }}</th>
            <th><i class="fa fa-calendar"></i> {{ 'label.content'|trans }}</th>
            <th><i class="fa fa-cogs"></i> {{ 'label.actions'|trans }}</th>
        </tr>
        </thead>
        <tbody>
        {% for tarifa in tarifas %}
            <tr>
                <td>{{ tarifa.id }}</td>
                <td>{{ tarifa.codigo }}</td>
                <td>{{ tarifa.nombre }}</td>
                <td>{{ tarifa.razon }}</td>
                <td>
                    <div class="item-actions">
                        <a href="{{ path('project_detail', { id: tarifa.id }) }}" class="btn btn-sm btn-default">
                            {{ 'action.show'|trans }}
                        </a>
                    </div>
                </td>
            </tr>
        {% endfor %}
        </tbody>
    </table>

    <script>
        $(document).ready( function () {
            $('#tarifas_index').DataTable({
                data: tarifas
            });
        } );
    </script>

{% endblock %}

如何从控制器传递json以在DataTable中使用它(在twig模板中),但是在此控制器中保存渲染。拜托,你能帮帮我吗?

答案

我不明白你想要实现什么,但你可以简单地将json编码和普通数据发送到你的树枝,使用它你想要的

return $this->render('admin/tarifas/index.html.twig', array(
    'tarifas' => $tarifas
    'json_tarifas' => json_encode($tarifas)
));
另一答案

你可以像这样渲染,

return $this->render('admin/tarifas/index.html.twig', array(
    'tarifas' => $tarifas
    'json_tarifas' => json_encode($tarifas)
));

并在树枝上检索这样的,

<script type="text/javascript">
    $(document).ready( function () {
        $('#tarifas_index').DataTable({
            data: $.parseJSON('{{ json_tarifas | raw }}')
        });
    } );
</script>

以上是关于如何在Symfony2中将json渲染成树枝的主要内容,如果未能解决你的问题,请参考以下文章

如何在 symfony2 中将 json 转换为 php 对象?

自定义 Symfony2 过滤器未使用自定义树枝标签触发

Symfony2 树枝模板中图像的路径

如何在 Symfony 2.0 AJAX 应用程序中将 Doctrine 实体编码为 JSON?

在基本视图(树枝)+ symfony2 中使用数据库中的数据

Symfony2 - 在树枝中自定义 form_start 函数