Sphinx Search Engine en PHP
Hoy veremos como utilizar Sphinx Search Engine en PHP para agilizar muchísimo las búsquedas en portales con mucho trafico. ¿Que hace Sphinx? Sphinx es un motor de búsqueda que se encarga de indexar los resultados de una consulta a una base de datos y los mete en un archivo binario. De esta forma al utilizar Sphinx las búsquedas no se hacen sobre la base de datos sino sobre el...
Instalar Sphinx Search Engine en Windows
Sphinx es un motor de búsqueda abierto diseñado con el fin de indexar contenidos de bases de datos. Nos permite que las búsquedas sean mucho más rápidas gracias a la indexación de contenido y de esta forma hacer buscadores optimizados para grandes cantidades de usuarios. Veamos como instalar Sphinx Search Engine en Windows. En primer lugar debemos descargar la versión de Sphinx para Windows de su web oficial. Descomprimiremos...
Instalar Sphinx Search Engine en Ubuntu
Sphinx es un motor de búsqueda abierto diseñado con el fin de indexar contenidos de bases de datos. Nos permite que las búsquedas sean mucho más rápidas gracias a la indexación de contenido y de esta forma hacer buscadores optimizados para grandes cantidades de usuarios. Veamos como instalar Sphinx Search Engine en Ubuntu. Instalar Sphinx es muy sencillo, en primer lugar añadimos el repositorio: add-apt-repository ppa:builds/sphinxsearch-daily Actualizamos los repositorios:...
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...