Código del ejemplo de creación de un blog con Symfony2
Puedes descargar todo el código de los ejemplos de tutoriales anteriores desde: https://github.com/victorobs/symfony2-blog Un saludo. ¿Quieres más? Vídeo Curso de Symfony3 ¡Domina el framework PHP más...
ACL en Symfony2
Para configurar las listas de control de acceso o ACL en Symfony2 simplemente tendremos que ir al fichero security.yml y añadir reglas a «access_control» como especifico en el siguiente ejemplo. security: firewalls: identificarse: pattern: ^/* anonymous: ~ provider: users form_login: login_path: login check_path: /login_check logout: path: logout target: / providers: users: entity: { class: Web\BlogBundle\Entity\Users, property: email } access_control: - { path: ^/registro, roles: IS_AUTHENTICATED_ANONYMOUSLY} - { path: ^/nuevo-post,...
Symfony2 desde 0: Eliminar posts
Por último veremos como eliminar posts, nos quedaria mucho por hacer si queremos hacer un blog completamente funcional, pero esto era solo un ejemplo de como proceder. La acción del controlador de posts para eliminar posts: public function deleteAction($post){ //Entity Manager $em = $this->getDoctrine()->getManager(); //Repositorios de entidades a utilizar $postRepository=$em->getRepository("WebBlogBundle:Posts"); $tagsPostsRepository=$em->getRepository("WebBlogBundle:TagsPosts"); /* * Borrar asociaciones de tags * con el post y borrar post */ $post=$postRepository->findOneBy(array("id"=>$post)); $tagsposts=$tagsPostsRepository->findBy(array("post"=>$post)); if(count($tagsposts)>=1){ foreach($tagsposts...
Symfony2 desde 0: Modificar posts
Ya tenemos listar y añadir posts. En esta ocasión veremos como modificar posts. Reutilizaremos el modelo del formulario y la vista y gran parte del controlador. Veamos como queda la acción en el controlador. public function editAction(Request $request,$post){ //Entity Manager $em = $this->getDoctrine()->getManager(); //Repositorios de entidades a utilizar $postRepository=$em->getRepository("WebBlogBundle:Posts"); $categoryRepository=$em->getRepository("WebBlogBundle:Categories"); //Conseguir todas las categorias $categories=$categoryRepository->findAll(); //conseguimos el objeto del Post $post = $postRepository->findOneBy(array("id"=>$post)); //Cargar foto si existe, hay que...
Paginación en Symfony2
Seguimos desarrollando nuestra aplicación tipo blog con Symfony2, en este caso vamos a ver como listar los posts incluyendo la paginación en Symfony2. Primero crearemos la ruta, que ya teníamos definida de antes. inicio: pattern: / defaults: { _controller: WebBlogBundle:Posts:index, page:1 } home: pattern: /inicio/{page} defaults: { _controller: WebBlogBundle:Posts:index, page:1 } Ahora crearemos un nuevo método en el repositorio de la entidad Posts que listará y paginará los posts....
Subir ficheros en Symfony2
En el post anterior hemos visto como crear el formulario de añadir posts, sin embargo no funciona la subida de la imágen. En este artículo veremos como subir ficheros en Symfony2. Es sencillo, simplemente en nuestro formulario definimos un campo tipo file y en la entidad añadimos los siguientes métodos. //SUBIDAS public function getAbsolutePath() { return null === $this->image ? null : $this->getUploadRootDir() . '/' . $this->image; } public...
Symfony2 desde 0: Añadir Posts
Si ya tenemos el login y registro con Symfony2, cuando nos identifiquemos en la parte superior derecha ya tenemos lo siguiente Ese link llevará a un controlador para añadir post. Primero crearemos el formulario que nos servirá para añadir y editar posts. Es importante prestar atención a como están configurados cada uno de los campos. <?php namespace Web\BlogBundle\Form\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolverInterface; class PostsType extends AbstractType {...
Repositorios de entidades personalizados en Symfony2
Para abstraer la lógica de negocio de los controladores podemos crear repositorios de entidades personalizados, esto nos permite llevarnos todo el tema del manejo de la base de datos a una clase aislada del controlador. Esto es lo que yo llamaba en otros frameworks como modelo o modelo de consulta. Para crear un repositorio en el que añadir nuevos métodos para el modelo tenemos que crear un fichero, por...
Symfony2 desde 0: Login y registro
Ahora veremos como hacer un login y registro con Symfony2. En el post anterior definimos la plantilla en la que montamos el formulario de login. ¡OJO! Con el name de username y password en el formulario de login, es necesario que delante tengan un guión bajo. Ahora montaremos el sistema de autenticación que nos proporciona Symfony2. Definiremos las rutas que necesitaremos hasta ahora en el fichero routing.yml de nuestro...
Symfony2 desde 0: Plantilla base
Definiremos la plantilla base para nuestras vistas en el fichero app/Resources/views/plantilla.html.twig En el definiremos algunos bloques, montaremos una navbar con Bootstrap, y el formulario de login. <!DOCTYPE HTML> <html lang="es"> <head> <meta charset="utf8"/> <title>{% block title %} Blog en Symfony2 - victorroblesweb.es{% endblock %}</title> <!-- jQuery CDN --> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> <!-- Bootstrap CDN --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap-theme.min.css"> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script> </head> <body> <header> <nav class="navbar navbar-default"> <div...
Symfony2 desde 0: Relaciones en Doctrine
Hemos generado las entidades automáticamente y también hemos indicado que la definición de estas estará en archivos yml. Ahora vamos a ver las relaciones en Doctrine que utilizaremos para el blog. Src/Web/BlogBundle/Resources/config/doctrine/Posts.orm.yml aquí tenemos la definición de cada campo y de las relaciones. Web\BlogBundle\Entity\Posts: type: entity table: posts indexes: fk_category_post: columns: - category_id fk_user_post: columns: - user_id id: id: type: bigint nullable: false unsigned: false id: true generator: strategy:...
Symfony2 desde 0: Crear bundle y generar entidades
Lo que realmente cuesta de pillar a la hora de programar con un framework tan potente como Symfony2 es el proceso de creación de una aplicación web con el. Eso es siempre lo que más me cuesta de entender cuando empiezo a aprender una tecnología. Pues bien voy a comenzar a publicar una serie de posts en los que desarrollaremos una aplicación web con Symfony2 desde 0 y de...