ccc

Symfony: Crear tus propias páginas

Importante: Nunca usar guiones (ni bajos ni normales) en los nombres. Da problemas.

Crear por ejemplo una página que liste actores:

a) Crear desde la consola en bundle si no existía ya de antes (por ejemplo cine\actoresBundle)

b) En /src/cine/actoresBundle/Resources/config/routing.yml añadir:
cineactores_listadoActores:
    pattern:  /listadoActores
    defaults: { _controller: cineactoresBundle:Default:listadoActores }

c) En /src/cine/actoresBundle/Controller/DefaultController.php añadir:

var $actores = array(
            array("id_actor" => "1", "nombre"=>"James Stewart"),
            array("id_actor" => "2", "nombre"=>"Gary Cooper"),
            array("id_actor" => "3", "nombre"=>"James Cagney")
        );


public function listadoActoresAction()
    {

        return $this->render('cineactoresBundle:Default:listadoActores.html.twig', array('actores' => $this->actores));
    }

d) Crear la vista  /src/cine/actoresBundle/Resources/views/Default/listadoActores.html.twig

<h1>Listado de actores</h1>
{% for actor in actores %}
    <div>{{actor.id_actor}} - {{actor.nombre}} </div>
{% endfor %}

Este código es twig (bastante parecido al PHP)

Documentación de Twig: http://twig.sensiolabs.org/documentation

Para ejecutarlo:
http://localhost/pruebasymfony/web/app_dev.php/listadoActores

-----------------------------------------------------------------------------
Si quisieramos mostrar los datos de un actor concreto:
En routing.yml añadir:
cineactores_showActor:
    pattern:  /showActor/{id_actor}
    defaults: { _controller: cineactoresBundle:Default:showActor }

En  el controlador DefaultController:
public function showActorAction($id_actor)
    {
        return $this->render('cineactoresBundle:Default:showActor.html.twig', array('actor' => $this->actores[$id_actor-1]));
    }

Crear la vista showActor.html.view:
<h1>Detalles del actor </h1>
<div>{{actor.id_actor}} - {{actor.nombre}} </div>

Para ejecutarlo:
http://localhost/pruebasymfony/web/app_dev.php/showActor/3

No hay comentarios:

Publicar un comentario