2016-06-28 39 views
0

问题是如何将json传递给树枝来渲染模板。我试图通过与JsonResponse对象的JSON,但我没有找到方式来呈现模板。如何在Symfony2中将json渲染成树枝

TarifasController.php

<?php 

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

namespace AppBundle\Controller\Admin; 

use Symfony\Component\HttpFoundation\Request; 
use Symfony\Component\HttpFoundation\Response; 
use Symfony\Component\HttpFoundation\JsonResponse; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security; 
use AppBundle\Entity\Tarifa; 

/** 
* 
* @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中使用它(在树枝模板),但mantaining渲染在这个控制器中。请,你能帮我吗?

+0

能否请您归结您的代码示例,直到他们只显示必要的部分? – Lumen

+0

我不明白它......你需要返回一个JSON编码字符串作为操作的响应,还是你想在模板中使用JSON对象作为数据提供者? – Muriano

+0

是的,我想使用json作为数据提供程序,但我不知道如何从控制器执行此操作来呈现模板 – jmunozco

回答

2

我不明白你想实现什么,但你可以简单地发送JSON编码和正常数据,以你的树枝,使用它,你想怎么

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