Symfony

7 entradas

Programación sobre PHP con el framework de desarrollo ágil Symfony.

LaPreguntaDelMillon

La pregunta del millón: ¿Magento, Prestashop, WordPress, Symfony, PHP a pelo..

Es el gran dilema en el desarrollo de aplicaciones web. Te hablan sobre un proyecto; con unos requerimientos, unas especificaciones. Debes elegir con las premisas que te dan: presupuesto, tiempo de entrega, calidad, flexibilidad, mantenibilidad, practicidad.. ¿Existe ya una solución para el proyecto? ¿Se puede partir de un CMS y modificarlo? ¿Son demasiadas las modificaciones que se van a hacer al CMS? ¿Es viable partir de un framework de calidad? ¿Buscamos máxima calidad, o menor precio? ¿Hay muchos desarrolladores disponibles en el mercado para mantener el proyecto?

SEOPagespeedMobile

SEO técnico, ponle nota a tu web

Montar una web con lo imprescindible, ponerle el contenido y diseño, y olvidarnos de ella.. sería como comprarnos un coche y ya no preocuparnos nunca por pasarle una revisión. Sería como si nos diera igual si hay una bajada de potencia del motor, que las ruedas no estuvieran bien hinchadas. Quizá una bujía deja de dar los chispazos al 100%.. Y no sólo están los problemas de mal-funcionamiento, sino que quizá también hay algunas mejoras extras. No todo viene de casa, y puedes hacer que el coche vaya mejor. ¿Porqué no entonces dedicarle ese tiempo a nuestra web para revisar esas cosas? Es más, ¿porqué no poner a un mecánico que sepa lo que está haciendo? Está claro que nos podemos quedar tal cual, nuestro coche andará. Pero queremos que no le falte esa alegría, que responda sin pereza. Resumiendo, queremos que la maquinaria esté bien engrasada, sacando el 100% de su rendimiento. Entonces necesitaremos a un especialista que toque, pero no de oídas, sino que sepa lo que está tocando.

OpsWorks Logo

AWS OpsWorks: automatizando la creación de servidores

Las nubes por definición son sistemas informáticos que crecen o decrecen según la necesidad. Son conjuntos de servidores/servicios que se adaptan a la demanda. Con todo esto, llegamos a una de las cosas más interesantes de AWS, el auto-escalado o la tolerancia a fallos, además de la personalización de los servidores. Podemos controlar la carga de los servidores que haya. Además automatizar el arranque y parada a ciertas horas de algunos de los servidores. O podemos duplicar los sistemas para evitar los ‘single point of failure como una casa’. En OpsWorks tenemos herramientas muy interesantes relacionadas con esto. Algo rústicas, quizá clásicas dirían algunos. Pero gracias a ello, sin límites en la flexibilidad para configurar. Y si lo llevamos al extremo, este mismo sistema nos puede servir para automatizar la creación de nuestros servidores con herramientas como Chef y Kitchen. Todo esto y mucho más es lo que se puede hacer con el clásico OpsWorks. Primero tendremos que ver qué son las AMIs. Cómo crear una manualmente o automáticamente. Y finalmente veremos cómo se usan, para hacernos una buena idea de qué podemos hacer en OpsWorks, y si es o no lo que necesitamos. Quizá es interesante ir a Docker […]

Symfony: Doctrine: persistir datos bidireccionalmente en una relación ManyToMany

Este es un pequeño HOWTO para tener de referencia. Si tienes una relación entre dos entidades de la forma ManyToMany, una de ellas tendrá inversedBy y la otra mappedBy. Con un ejemplo se ve más claro. Suponiendo que has generado las acciones CRUD con el comando siguiente: $ php app/console doctrine:generate:crud  Supongamos que tenemos usuarios y negocios relacionados así, en una relación muchos a muchos. En la entidad Business tenemos:/** * @ORMManyToMany(targetEntity=”User”,  * inversedBy=”users”, cascade={“persist”}) */private $users; Y en la entidad User tenemos: /** * @ORMManyToMany(targetEntity=”Business”,  * mappedBy=”users”, cascade={“persist”}) * @ORMJoinColumn(onDelete=”SET NULL”) */private $businesses;Ahora el editar los usuarios tenemos en el formulario de edición de un usuario lo siguiente: ->add(‘businesses’, ‘entity’, array(    ‘by_reference’ => false,    //..))La entidad inversedBy, que en este caso es Business, guardará correctamente los Users referenciados al editarlos. Pero al contrario con la entidad Users, tiene los Business mapeados, lo que hará que no guarde automáticamente las referencias. Hay que añadir lo que he puesto en negrita en los códigos anteriores y en la entidad User lo siguiente para permitir que añada y borre los Business correctamente. /** * Add businesses. * * @param AppBundleEntityBusiness $businesses * * @return User */public function addBusiness(AppBundleEntityBusiness $business){    $this->businesses[] = $business;    $business->addUser($this);     return $this;} /** * Remove businesses. * * @param AppBundleEntityBusiness $businesses */public function removeBusiness(AppBundleEntityBusiness $business){    $this->businesses->removeElement($business);    […]

Sylius.org tienda online 100% Symfony: calidad, flexibilidad y escalabilidad

Brutal el proyecto que están desarrollando en Sylius. Navegando y navegando por proyectos para hacer tiendas online. Viendo las principales opciones del mercado: Magento, Prestashop y WordPress con WooCommerce. Me planteaba la opción de cómo sería desarrollar una tienda completa en Symfony. Integrar pasarelas de pago, métodos de envío, ordenando todo los productos por categorías, valores, atributos de los productos.. es un trabajazo. Pero por otro lado no quería prescindir de la flexibilidad y agilidad que nos da un buen framework PHP, en este caso el gran Symfony. Aterrizaje Todas estas búsquedas me llevaron a encontrar Sylius. Lo que hasta ahora es el proyecto de tienda online basado en Symfony que me ha parecido más interesante. A fecha en que escribo está en fase de desarrollo aunque hay quien ya lo está utilizando. Aquí el repositorio público de la aplicación web:https://github.com/Sylius/Sylius Página principal del proyecto:http://sylius.org/ Se trata de un proyecto Open Source, licenciado bajo la MIT license. Esto nos permite usar Sylius para cualquier proyecto, libremente sin coste de compra ninguno. Lo único que no se pude hacer es decir que Sylius lo hemos hecho nosotros, como es lógico. Se puede adaptar, modificar, ampliar, etc.. Cualquier cosa se puede hacer […]

Symfony i18n: internacionalización de la web, entrada a la web

Puede ser algo trivial, pero es el punto de partida para iniciar la internacionalización de una web. Me refiero a la llegada del usuario, recogida del código de idioma y región del navegador, se comprueban los idiomas disponibles y posteriormente se le redirige a la página de su idioma correspondiente. Es mucho más sencillo que lo que puede parecer a priori, pero claro está, hay que tener claras un par de cosas que si no después se complica. El usuario llega a la web En este punto, tenemos un usuario que llega a la web. Ahora es el momento de elegir el idioma en que le vamos a mostrar la página web al usuario. Que podemos hacerlo de dos formas diferentes: eligiendo el idioma por defecto o con el idioma que nos sugiera el navegador. Vamos a empezar con un ejemplo de controlador que recibe la visita inicial del usuario: <?phpnamespace FrontBundleController; use SymfonyBundleFrameworkBundleControllerController;use SensioBundleFrameworkExtraBundleConfigurationRoute;use SensioBundleFrameworkExtraBundleConfigurationTemplate;use SymfonyComponentHttpFoundationRequest;/* * Controlador de ejemplo para empezar a traducir una web. * Sólo tiene las dos rutas necesarias para empezar la navegación traducida * Se necesita de la entidad Idioma para tener los idiomas disponibles. */class DefaultController extends Controller{    /**     * Esta ruta es la página de inicio. […]

Creando nuevo proyecto Symfony

Cada vez viene siendo más sencillo programar con Symfony. Con la última versión 2.7 LTS leo que tenemos un sencillo programa de línea de comando que nos hace aún más rápido el comenzar un nuevo proyecto. Simplemente ejecutando lo que se ve en la imagen te creará la estructura básica de un nuevo proyecto con la última versión del framework listo para empezar a crear los bundles, las entidades, CRUDs, o lo que necesitemos. No hay más que ejecutar desde el directorio donde lo queramos lo siguiente: $ symfony new nombreProyecto Para instalarlo me remito a la documentación oficial:http://symfony.com/download No puedo enlazarlo así que os dejo aquí las instrucciones. En Linux o Mac ponemos lo siguiente: $ sudo curl -LsS http://symfony.com/installer -o /usr/local/bin/symfony $ sudo chmod a+x /usr/local/bin/symfony  En Windows lo siguiente: c:> php -r “readfile(‘http://symfony.com/installer’);” > symfony  Me despido recomendando una vez más a todos los programadores web a seguir aprendiendo frameworks. Seamos productivos utilizándolos, en mi caso ha sido una buena inversión de tiempo. Y ahora que miro atrás en cómo se hacen los desarrollos web sin frameworks, o con frameworks.. Veo cada día más claro que con tanto CMS el futuro de los desarrolladores web está en […]