ccc

Symfony CRUD Simple

En el Routing:
edcpeliculas_addCineasta:
    path:     /peliculas/addCineasta
    defaults: { _controller: edcpeliculasBundle:Default:addCineasta }
edcpeliculas_delCineasta:
    path:     /peliculas/delCineasta/{id}
    defaults: { _controller: edcpeliculasBundle:Default:delCineasta }
edcpeliculas_editCineasta:
    path:     /peliculas/editCineasta/{id}
    defaults: { _controller: edcpeliculasBundle:Default:editCineasta }
edcpeliculas_listarCineastas:
    path:     /peliculas/listarCineastas
    defaults: { _controller: edcpeliculasBundle:Default:listarCineastas }

En el defaultController:
<?php
namespace edc\peliculasBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

use edc\peliculasBundle\Entity\peliculas;
use edc\peliculasBundle\Entity\cineastas;
use edc\peliculasBundle\Form\cineastasType;
use edc\peliculasBundle\Form\PeliculasType;

use Symfony\Component\HttpFoundation\Request;


class DefaultController extends Controller
{
    public function indexAction()
        {
       
        }
  
    // **************************************************
     public function addCineastaAction(Request $request)
    {
         $cineastaAux = new cineastas();
         $form = $this->createForm(new cineastasType(),$cineastaAux);
         $form->handleRequest($request);
        
         if($form->isValid()) {
            $em=$this->getDoctrine()->getManager();
            $em->persist($cineastaAux);
            $em->flush();
            $this->get('session')->getFlashBag()->add(
                                'mensaje','Se ha añadido el cineasta correctamente'
                            );
            return $this->redirect($this->generateUrl('edcpeliculas_listarCineastas'));
         }
        
        return $this->render('edcpeliculasBundle:Default:addCineasta.html.twig',
                            array("form"=>$form->createView()));
    }
   
    // *****************************************
    public function delCineastaAction($id)
    {
        $em = $this->getDoctrine()->getManager();
        $cineastaAux = $em->getRepository('edcpeliculasBundle:cineastas')->find($id);
        
        if (!$cineastaAux) {
            throw $this->createNotFoundException(
                    'No existe el cineasta con el valor:'.$id
            );
        }
        
        $em->remove($cineastaAux);
        $em->flush();
        $this->get('session')->getFlashBag()->add(
                'mensaje',
                'Se ha eliminado el cineasta correctamente'
        );
        return $this->redirect($this->generateUrl('edcpeliculas_listarCineastas'));
    }
   
    // *******************************************
    public function editCineastaAction($id,Request $request)
    {
        $cineastaAux = new cineastas();
           
        $datos = $this->getDoctrine()
                ->getRepository('edcpeliculasBundle:cineastas')
                ->find($id);
        if (!$datos) {
                    throw $this->createNotFoundException(
                    'No existe el cineasta con el valor:'.$id
                     );
        }
           
           
       $form = $this->createForm(new CineastasType(), $datos);
       $form->handleRequest($request);
           
       if ($form->isValid()) {
          $em = $this->getDoctrine()->getManager();
          //$em->persist($p);
          $em->flush();
          $this->get('session')->getFlashBag()->add(
                                'mensaje',
                                'Se ha modificado el cineasta correctamente'
                            );
           return $this->redirect($this->generateUrl('edcpeliculas_listarCineastas'));
        }
        return $this->render('edcpeliculasBundle:Default:editCineasta.html.twig',array("form"=>$form->createView()));
    }
   
   
   
    // **************************************
    public function listarCineastasAction()
    {
        $datos = $this->getDoctrine()
        /*
        ->getRepository('edcpeliculasBundle:cineastas')
            ->findAll();
        */
          // Si queremos una SQL más especifica entonces en vez de findAll:
        ->getRepository('edcpeliculasBundle:cineastas')
             ->createQueryBuilder('c')
                ->where('c.nombre LIKE :nombre1')
                ->orWhere('c.nombre LIKE :nombre2')
                ->andWhere('c.id >10')
                ->setParameter('nombre1', '%j%')
                ->setParameter('nombre2', '%b%')
                ->orderBy('c.nombre', 'ASC')
                ->getQuery()
                ->getResult();
        return $this->render('edcpeliculasBundle:Default:listarCineastas.html.twig',compact("datos"));
    }
}

Vista listarCineastas.html.twig
{% extends 'edcpeliculasBundle::viewEDC.html.twig' %}

{% block body %}
    {{ parent() }}

    <h1>Listado de cineastas</h1>
     {% for flashMessage in app.session.flashbag.get('mensaje') %}
        <span class="alert-success">
            {{ flashMessage }}
            <hr />
        </span>
    {% endfor %}
     
   
    <hr />
    <table class="table table-bordered">
        <tbody>
            <th>
            Cineasta
            </th>
            <th>Nombre</th>
        </tbody>
           {% for dato in datos %}
        <tr>
            <td>{{dato.nombre}}</td>
            <td>
                <a href="{{ path('edcpeliculas_editCineasta', {'id':dato.id}) }}" title="Editar">Editar</a>
                -
                 <a href="{{ path('edcpeliculas_delCineasta', {'id':dato.id}) }}" title="Eliminar">Eliminar</a>
            </td>
        </tr>
        {% endfor %}
    </table>
 {% endblock %}

Vista addCineasta.html.twig
{% extends 'edcpeliculasBundle::viewEDC.html.twig' %}
{% block body %}
    {{ parent() }}
    <h1>Agregar Cineasta</h1>
     {{ form_start(form) }}
         <p>Nombre : {{form_widget(form.nombre)}}</p>
         <p>
            <hr />
            {{form_widget(form.guardar)}}
        </p>
      {{ form_end(form) }}
 {% endblock %}

Vista editCineasta.html.twig
{% extends 'edcpeliculasBundle::viewEDC.html.twig' %}
{% block body %}
    {{ parent() }}
    <h1>Editar Cineasta</h1>
    {{ form_start(form) }}
         <p>Nombre: {{form_widget(form.nombre)}}</p>
         <p>
            <hr />
            {{form_widget(form.guardar)}}
        </p>
    {{ form_end(form) }}
{% endblock %}

Vista (de la que heredan) viewEDC.html.twig (se guarda en la raiz del view de nuestro Bundle)
{# esta va a ser la vista standard que heredaran las otras vistas #}
{% extends "::base.html.twig" %}

{% block stylesheets %}
    <link href="{{ asset('bundles/peliculas/css/css_edc.css') }}" rel="stylesheet" />
    <link href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
{% endblock %}

{% block body %}
    <ol class="breadcrumb">
        <li><a href="{{ path('edcpeliculas_addCineasta') }}">Añadir cineasta</a></li>
        <li><a href="{{path('edcpeliculas_listarCineastas') }}">Listar cineastas</a></li>
    </ol>
{% endblock %}

No hay comentarios:

Publicar un comentario