Wie render json, in einem Zweig, in Symfony2

Die Frage ist, wie das übergeben eines json, twig Rendern einer Vorlage. Ich habe versucht, den pass eines json mit JsonResponse-Objekt, aber ich nicht finden den Weg zum Rendern der Vorlage.

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-Code.Zweig

{% 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 %}

Wie kann ich passiere ein json aus dem controller, um es in den DataTable (im twig-template), aber mantaining das Rendern in diesem controller. Bitte, können Sie mir helfen?

  • Kannst du bitte Kochen Sie Ihre code-Beispiele, bis Sie zeigen nur die notwendigen Teile?
  • Ich don ' T undestand es... brauchen Sie wieder eine JSON-encode string als Antwort, von Aktion oder möchten Sie ein JSON-Objekt als Daten-provider, die in Ihrer Vorlage?
  • Ja, ich möchte an einem json als Daten-provider, aber ich weiß nicht, wie Sie dies tun, aus dem controller zu Rendern einer Vorlage
  • warum gehst du nicht einfach decodieren des json-Daten vor dem senden an Zweig? dann können Sie es als array oder Objekt, wie Sie in Ihrem Zweig-Datei.
InformationsquelleAutor jmunozco | 2016-06-28
Schreibe einen Kommentar