Validar formularios en Symfony2
Un aspecto fundamental a la hora de trabajar con formularios es la validación de los datos que llegan de los mismos. Veamos como validar formularios en Symfony2. Tenemos este formulario creado. <?php namespace Pruebas\EjemploBundle\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Doctrine\ORM\EntityRepository; class PostsType extends AbstractType { /** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('title','text',array("required"=>false, 'attr' => array('class'=>'form-control')...
Personalizar formularios en la vista en Symfony2
Personalizar formularios en la vista en Symfony2 Hoy veremos como personalizar formularios en la vista en Symfony2. Ya tenemos nuestro formulario creado y con el código necesario en el controlador. <?php namespace Pruebas\EjemploBundle\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolverInterface; class PostsType extends AbstractType { /** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('title','text',array("required"=>true, 'attr' => array('class'=>'form-control') )) ->add('description','textarea',array("required"=>true, 'attr'...
Crear formularios en Symfony2
Los formularios son un aspecto fundamental dentro del desarrollo de aplicaciones web y por eso es tan importante que un framework nos solucione problemas y nos agilice el trabajo con ellos. Ahora veremos como crear formularios en Symfony2. En Symfony2 tenemos un comando para casi cualquier cosa, para crear un formulario en Symfony2 tenemos el comando: php app/console doctrine:generate:form NamespaceDeMiBundle:Entidad Esto nos generará una clase dentro del directorio Form...
var_dump en Twig
Veamos como hacer un var_dump en Twig, ya que es muy necesario a la hora de programar en PHP. {# var_dump() en Twig #} {{ dump(posts) }} Symfony nos pintará algo así: ¿Quieres más? Vídeo Curso de Symfony3 ¡Domina el framework PHP más...
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...