Cambios de Symfony3 con respecto a Symfony2
Los cambios de Syfmony3 con respecto a Symfony2, son muchos(la mayoría serán a nivel interno del núcleo del framework), lo que no significa que cambie demasiado la forma de trabajar con el framework. Los cambios que más afectan a la hora de trabajar en la versión 3 de Symfony son: Eliminación de clases y métodos deprecados La consola ya no está en app/console si no en bin/console Cambios en...
Crear formularios en Symfony3
Vamos a ver cómo crear formularios en Symfony3. El procedimiento para crear formularios en Symfony 3 es algo diferente que en Symfony2 aunque es muy parecido, solo cambia algo de código. Abrimos la consola y nos vamos al directorio donde tengamos el proyecto Symfony3 y lanzamos el comando: php bin/console doctrine:generate:form MiBundle:MiEntidad Ahora tendremos un fichero nuevo en el directorio Form de nuestro Bundle. En mi caso tengo CursoType.php...
Solución al editar formulario con un input file en Symfony3 y 2
Vamos a solucionar el siguiente error: The form’s view data is expected to be an instance of class Symfony\Component\HttpFoundation\File\File, but is a(n) string. You can avoid this error by setting the «data_class» option to null or by adding a view transformer that transforms a(n) string to an instance of Symfony\Component\HttpFoundation\File\File. Este error se da cuando intentamos actualizar los datos de un input file de un formulario en Symfony2 y...
Subir archivos en Symfony3
Subir archivos en Symfony3 es extremadamente fácil. Vamos a ver como subir archivos de forma fácil con Symfony 3. Primero tenemos que definir un campo de tipo file en nuestro formulario. $builder ->add('image', FileType::class,array( "label" => "Imagen:", "attr" =>array("class" => "form-control") )); En el controlador cuando el formulario se haya enviado, subiremos el fichero: // Recogemos el fichero $file=$form['image']->getData(); // Sacamos la extensión del fichero $ext=$file->guessExtension(); // Le ponemos...
Autenticación en Symfony3: Crear Login
En este tutorial veremos como usar la autenticación en Symfony3 y como crear un login de usuarios. En Symfony 3 la forma de hacer la autenticación ha cambiado bastante con respecto a Symfony2, así que veamos como se hacer un login. En primer lugar entramos al fichero app/config/security.yml security: # En el caso que los usuarios tengan la contraseña cifrada configuramos los encoders para la entidad en la que...
Solución [Twig_Error_Runtime] does not exist in «form/FormType.php.twig» at line 29
En Symfony3 y Symfony2.8 Cuando intentamos generar un formulario vinculado a un modelo que tiene algun tipo de relación con otra entidad de Doctrine, nos falla al generar el campo que se relaciona con la otra entidad. Si lanzamos: php bin/console doctrine:generate:form AppBundle:Post Nos puede dar un error así: [Twig_Error_Runtime] Key «category» for array with keys «id, description» does not exist in «form/FormType.php.twig» at line 29 Esto es un...
Instalar Symfony3
Symfony acaba de sacar la versión 3 del framework, que no representa ningún cambio radical a la hora de trabajar con el framework, sin embargo hay varias cosas que cambian, se simplifican o se eliminan métodos deprecados. Veamos como instalar Symfony3 con Composer. Lanzamos el comando: composer create-project symfony/framework-standard-edition symfony/ "3.*" Si quieres limitar la versión a la 3.0 puedes hacerlo indicando «3.0.*» Una vez que se descarge todos...
Between en DQL
Veamos como usar between en DQL con este método de ejemplo: public function getPostsLastDays($days) { $em = $this->getEntityManager(); $fecha = date('Y-m-d'); $nuevafecha = strtotime("-{$days} day", strtotime($fecha)); $nuevafecha = date ( 'Y-m-d' , $nuevafecha ); $dql = "SELECT p FROM Web\BlogBundle\Entity\Posts p WHERE p.createdAt BETWEEN '{$nuevafecha}' AND '5000-01-01' ORDER BY p.createdAt DESC"; $query = $em->createQuery($dql); $posts = $query->getResult(); return $posts; } Este método lo que hace es sacar los posts...
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...