Variables superglobales en Twig
Podemos consergir los valores de diversas variables superglobales en Twig. Conseguir datos del usuario identificado: app.user Conseguir datos de get y post: app.request app.request.get('foo') //get app.request.request.get('foo') //post Sesiones: app.session Otros: app.environment app.debug ¿Quieres más? Vídeo Curso de Symfony3 ¡Domina el framework PHP más completo! Más información: Symfony2 Cheatsheet...
Plantillas en Symfony2
Las plantillas en Symfony2 se pueden definir de manera global en el directorio app/Resources/views/default/ y con twig podemos definir una serie de bloques que luego serán utilizados en las vistas normales para “rellenar” esa plantilla. Veamos un ejemplo. Plantilla.html.twig <!DOCTYPE HTML> <html lang="es"> <head> <meta charset="utf8"/> <title>{% block title %} Plantillas en Symfony2 {% endblock %}</title> </head> <body> <div class="content">{%block content %} Contenido vacio por defecto {%endblock%}</div> </body> </html>...
Vistas en Symfony2
Las vistas en Symfony2 se colocan en el directorio views de nuestro Bundle y dentro de un directorio con el nombre del controlador al que corresponden. En la acción devolvemos el render de la vista y le pasamos los parámetros, de esta forma: return $this->render("PruebasEjemploBundle:Default:listar.html.twig", array( "posts"=>$po )); Después en la vista con Twig podremos hacer muchas cosas: {# Comentario en Twig Estamos en MIBUNDLE/views/Default/listar.html.twig #} {# Imprimir en...
Ejecutar consultas SQL en Symfony2 / 2.8 / 3
Hay veces que cuando utilizamos un framework necesitamos ejecutar consultas SQL nativas. Hoy veremos como ejecutar consultas SQL en Symfony2 mediante Doctrine 2. En una acción por ejemplo: //Entity manager y conexión a la BD $em = $this->getDoctrine()->getEntityManager(); $db = $em->getConnection(); $query = "SELECT * FROM posts; "; $stmt = $db->prepare($query); $params = array(); $stmt->execute($params); $po=$stmt->fetchAll(); // Mostrar todo foreach ($po as $p) { echo $p["title"]; echo "<br/>"; echo...
Borrar registros de la base de datos en Symfony2
Veamos como borrar registros de la base de datos en Symfony2 con Doctrine. Crearemos una ruta para el método action de borrar. borrar: path: /borrar/{id} defaults: { _controller: PruebasEjemploBundle:Default:borrar } public function borrarAction($id) { //Entity Manager $em = $this->getDoctrine()->getEntityManager(); $posts = $em->getRepository("PruebasEjemploBundle:Posts"); $post = $posts->find($id); $em->remove($post); $flush=$em->flush(); if ($flush == null) { echo "Post se ha borrado correctamente"; } else { echo "El post no se ha borrado"; }...
Actualizar registros de la base de datos en Symfony2
Veamos como actualizar registros de la base de datos en Symfony2. Crearemos una ruta para ello. actualizar: path: /actualizar/{id}/{title}/{description}/{content} defaults: { _controller: PruebasEjemploBundle:Default:actualizar } Creamos también una acción. public function actualizarAction($id, $title, $description, $content) { //Entity Manager $em = $this->getDoctrine()->getEntityManager(); $posts = $em->getRepository("PruebasEjemploBundle:Posts"); $post = $posts->find($id); $post->setTitle($title); $post->setDescription($description); $post->setContent($content); //Persistimos en el objeto $em->persist($post); //Insertarmos en la base de datos $flush = $em->flush(); if ($flush == null) { echo...
Sacar de la base de datos en Symfony2
Vamos a ver como conseguir los datos que hay guardados en una tabla, esto sería lo equivalente a la sentencia SELECT pero con Doctrine. Con los métodos find de Doctrine podremos sacar de la base de datos en Symfony2. Crearemos una ruta para listar los datos. listar: path: /listar defaults: { _controller: PruebasEjemploBundle:Default:listar } Y creamos un método en el controlador. public function listarAction() { //Entity Manager $em =...
Insertar en la base de datos en Symfony2
Como sabemos Symfony2 usa Doctrine 2 para manejar la base de datos, haremos uso de este y veremos como insertar en la base de datos en Symfony2. Crearemos una ruta(routing.yml) que recibirá los parámetros a insertar en la base de datos: insertar: path: /insertar/{title}/{description}/{content} defaults: { _controller: PruebasEjemploBundle:Default:insertar } Ahora en el controlador de nuestro bundle creamos el método. Debemos hacer un use del objeto post antes de la...
Generar tablas a partir de entidades con Doctrine
Para generar tablas a partir de entidades con Doctrine en Symfony2 debemos ejecutar tres comandos en el caso de que la base de datos ya esté creada. Si la base de datos está vacía podemos ejecutar directamente php app/console doctrine:schema:create Si queremos borrar todas las tablas y generar nuevas a partir de entidades drop php app/console doctrine:schema:drop --force Si queremos actualizar campos php app/console doctrine:schema:update --force ¿Quieres más? Vídeo...
Generar entidades con Doctrine 2
Para generar entidades con Doctrine 2 en Symfony2 simplemente tendremos que usar el comando php app/console doctrine:generate:entity A partir de aquí el asistente nos irá pidiendo los campos, el tipo, etc. ¿Quieres más? Vídeo Curso de Symfony3 ¡Domina el framework PHP más completo! Más información: Generate Doctrine Entity – Symfony2 Official...
Generar entidades a partir de base de datos con Doctrine 2
Doctrine es el ORM más poderoso que tenemos en PHP y Symfony lo usa para todo lo que tiene que ver con interacciones con la base de datos. Seguro que se puede dar el caso en el que necesitamos generar todas las entidades a partir de una base de datos ya existente. Esto es muy cómodo porque podemos hacer nuestra base de datos en SQL o con cualquier programa...
Recoger variables GET y POST en Symfony2
Veamos un ejemplo simple de como recoger los valores que nos llegan desde GET y POST en Symfony2. Simplemente tendremos que hacer uso de HttpFundation para acceder a diversas variables superglobales entre ellas GET y POST. Ejemplo: <?php namespace Ejemplos\PruebasBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Response; //Usar request http fundation use Symfony\Component\HttpFoundation\Request; class PruebasController extends Controller { public function indexAction(Request $request){ //Recoger GET $var=$request->query->get("page"); var_dump("GET:".$var); //Recoger POST $var=$request->request->get("page"); var_dump("POST:".$var); die(); }...