Después de estar trabajando casi dos años en el desarrollo de un conjunto de librerías (o core) que debían compartir el resto de proyectos de clientes de una agencia de publicidad, hemos aprendido muchas cosas de cómo hacer los third-party bundles extensibles y heredables permitiendo adaptarse a todo tipo de proyectos.
En la charla explicaremos estrategias y mecanismos que ofrecen Symfony y Doctrine para conseguir sobreescribir las validaciones y formularios o extender las entidades de Doctrine, como son relaciones mediante interfaces, Load Class Metada event, mapped superclass, Doctrine ORM compiler pass y disciminator map. Todo ello acompañado de ejemplos prácticos.
Por Germán Figna (@gerfigna) y Alfonso Machado (@almacbe)
Cucumber sucks. Features are hard to write and constantly break when the UI changes. Step definitions are annoying to create and a freaking nightmare to maintain. And Cucumber suites take for-EVER to run, because you have to wait for a web browser.
Except... [almost] none of that is actually true.
After years of making awful messes with Cucumber, I finally found a way to use it that worked well, and a project I couldn't have done without it. I'd like to show you one way to use Cucumber that can be elegant, powerful, expressive, and—believe it or not—fast.
The e-commerce is one of the main points of modern software. The e-commerce sector is growing about 15% annually, which is why it deserves special attention from software engineers. Speaking of e-commerce and open source at once is not easy. For many years we have identified the concept with pain and despair, so we must work urgently to change the way we understand it should be. What are the important points to consider? Where do we find the line between architecture and pragmatism? Are we walking in the right direction? How can Symfony help in this?
This document summarizes Julien Pauli's presentation on PHP 7 performance optimizations compared to PHP 5. It discusses profiling a Symfony application under PHP 5 and PHP 7, showing PHP 7 runs 23% faster with an opcode cache. Key PHP 7 optimizations discussed include a more efficient zval structure reducing variable size, more compact and cache-friendly hashtable design, and optimized string handling with the zend_string structure. Various virtual machine operations like array operations, casts, and concatenations also see significant performance gains in PHP 7.
If you have used Facebook's React library, then you are familiar with the concept of application state. React components are, at their core (and as noted in the official documentation), simple state machines. This declarative approach to building a UI may take some adjusting to, but it ultimately simplifies kludgy imperative code into smaller, much more manageable pieces.
This pattern of manipulating state and responding to those changes can be implemented to great effect using the Symfony Event Dispatcher. This talk will step through this state-based approach to building an easily maintained and testable PHP application, tease out a few gotchas, and share real-world applications.
Desarrollo código mantenible en WordPress utilizando SymfonyAsier Marqués
El objetivo de esta charla es mostrar cómo aplicar buenas prácticas de desarrollo cuando trabajemos con WordPress, implementando PSRs y desacoplando nuestro código para poder migrarlo en un futuro a otras opciones sin esfuerzo y dotarle de una buena cobertura de tests.
Veremos cómo podemos desarrollar y mantener plataformas basadas en WordPress utilizando cosas como inyección de dependencias, rutas en anotaciones y controladores; cómo utilizar composer para plugins, themes y sus dependencias; cómo montar los despliegues y qué opciones tenemos para utilizar WordPress desde nuestros Bundes.
There are so many interesting ways to authenticate a user: via an API token, social login, a traditional HTML form or anything else you can dream up. But until now, creating a custom authentication system in Symfony has meant a lot of files and a lot of complexity. Introducing Guard: a simple, but expandable authentication system built on top of the security component and introduced in Symfony 2.8. Want to authenticate via an API token? Great - that's just one class. Social login? Easy! Have some crazy legacy central authentication system? In this talk, we'll show you how you'd implement any of these in your application today. Don't get me wrong - you'll still need to do some work. But finally, the path will be clear and joyful.
New Symfony Tips & Tricks (SymfonyCon Paris 2015)Javier Eguiluz
This talk included tens of tips and tricks, new features and rarely used options for Symfony and its ecosystem. Besides the full-stack Symfony framework, other related technologies were mentioned, like Doctrine, Composer, Twig, PHPUnit and Monolog.
Este documento describe los conceptos clave de los canales de distribución y la selección de canales para vender productos. Explica que los canales de distribución son las estructuras que transportan los productos desde los fabricantes hasta los consumidores finales a través de intermediarios. También analiza factores como la naturaleza del mercado, el producto, los intermediarios y la empresa que afectan la selección del canal de distribución apropiado.
Cucumber sucks. Features are hard to write and constantly break when the UI changes. Step definitions are annoying to create and a freaking nightmare to maintain. And Cucumber suites take for-EVER to run, because you have to wait for a web browser.
Except... [almost] none of that is actually true.
After years of making awful messes with Cucumber, I finally found a way to use it that worked well, and a project I couldn't have done without it. I'd like to show you one way to use Cucumber that can be elegant, powerful, expressive, and—believe it or not—fast.
The e-commerce is one of the main points of modern software. The e-commerce sector is growing about 15% annually, which is why it deserves special attention from software engineers. Speaking of e-commerce and open source at once is not easy. For many years we have identified the concept with pain and despair, so we must work urgently to change the way we understand it should be. What are the important points to consider? Where do we find the line between architecture and pragmatism? Are we walking in the right direction? How can Symfony help in this?
This document summarizes Julien Pauli's presentation on PHP 7 performance optimizations compared to PHP 5. It discusses profiling a Symfony application under PHP 5 and PHP 7, showing PHP 7 runs 23% faster with an opcode cache. Key PHP 7 optimizations discussed include a more efficient zval structure reducing variable size, more compact and cache-friendly hashtable design, and optimized string handling with the zend_string structure. Various virtual machine operations like array operations, casts, and concatenations also see significant performance gains in PHP 7.
If you have used Facebook's React library, then you are familiar with the concept of application state. React components are, at their core (and as noted in the official documentation), simple state machines. This declarative approach to building a UI may take some adjusting to, but it ultimately simplifies kludgy imperative code into smaller, much more manageable pieces.
This pattern of manipulating state and responding to those changes can be implemented to great effect using the Symfony Event Dispatcher. This talk will step through this state-based approach to building an easily maintained and testable PHP application, tease out a few gotchas, and share real-world applications.
Desarrollo código mantenible en WordPress utilizando SymfonyAsier Marqués
El objetivo de esta charla es mostrar cómo aplicar buenas prácticas de desarrollo cuando trabajemos con WordPress, implementando PSRs y desacoplando nuestro código para poder migrarlo en un futuro a otras opciones sin esfuerzo y dotarle de una buena cobertura de tests.
Veremos cómo podemos desarrollar y mantener plataformas basadas en WordPress utilizando cosas como inyección de dependencias, rutas en anotaciones y controladores; cómo utilizar composer para plugins, themes y sus dependencias; cómo montar los despliegues y qué opciones tenemos para utilizar WordPress desde nuestros Bundes.
There are so many interesting ways to authenticate a user: via an API token, social login, a traditional HTML form or anything else you can dream up. But until now, creating a custom authentication system in Symfony has meant a lot of files and a lot of complexity. Introducing Guard: a simple, but expandable authentication system built on top of the security component and introduced in Symfony 2.8. Want to authenticate via an API token? Great - that's just one class. Social login? Easy! Have some crazy legacy central authentication system? In this talk, we'll show you how you'd implement any of these in your application today. Don't get me wrong - you'll still need to do some work. But finally, the path will be clear and joyful.
New Symfony Tips & Tricks (SymfonyCon Paris 2015)Javier Eguiluz
This talk included tens of tips and tricks, new features and rarely used options for Symfony and its ecosystem. Besides the full-stack Symfony framework, other related technologies were mentioned, like Doctrine, Composer, Twig, PHPUnit and Monolog.
Este documento describe los conceptos clave de los canales de distribución y la selección de canales para vender productos. Explica que los canales de distribución son las estructuras que transportan los productos desde los fabricantes hasta los consumidores finales a través de intermediarios. También analiza factores como la naturaleza del mercado, el producto, los intermediarios y la empresa que afectan la selección del canal de distribución apropiado.
El documento argumenta que las agencias de publicidad deben enfocarse más en la creatividad y estrategia para recuperar la confianza de los anunciantes. Sugiere que las agencias utilicen su talento creativo para analizar los mercados y necesidades de comunicación de los clientes de nuevas formas, e involucren más a los departamentos creativos en todo el proceso de marketing. También recomienda incrementar los recursos creativos de las agencias y cobrar más por servicios que permitan a la creatividad influir en todos los niveles del neg
Este documento resume la función comercial de las empresas a través de la historia. Explica conceptos clave como la actividad comercial, el departamento comercial, los tipos de mercados y competencia, el estudio de mercado, y los elementos del marketing como el producto, precio, plaza y promoción. Finalmente, detalla las etapas de un plan de marketing.
Trabajo sobre la Franquicia. Asignatura: Modelos de Internacionalización de la Empresa, asignatura impartida en el Máster Oficial de Comercio Exterior de la Universidad de Valladolid. Profesor: D. Luis Óscar Ramos Alonso.
Se muestran 18 de las 41 páginas posibles.
Más información en: https://www.linkedin.com/profile/preview?vpa=pub&locale=es_ES
http://blogmisproyetosuniversitarios-carlos.blogspot.com.es/
Semana 4 - Go to market, márgenes, Push y Pull.pdffernanduca191817
Este documento presenta información sobre un curso de Canales de Distribución y Trade en la Facultad de Comunicaciones de la UPC. Se detalla el temario de una sesión que incluye márgenes del fabricante e intermediarios, así como políticas de precios. Además, se explican conceptos clave relacionados a la ruta de mercado de los productos, como canales de distribución, márgenes, precios de lista y descuentos. Finalmente, se incluyen ejemplos numéricos para calcular márgenes usando los métodos de mark up y
Repaso de los contenidos del examen del ii parcial emprendimiento 1 y 2LISBETHSARAIMALDONAD1
Este documento presenta una revisión de los contenidos de un examen parcial de emprendimiento. Incluye definiciones y conceptos clave como la presentación de un negocio, el perfil del negocio, conocer a los clientes, competidores, fijación de precios, publicidad, planeación, organización, presupuesto y más. También cubre temas como tipos de envases, proveedores, determinación de precios y estructura organizacional.
Allstartup. Adaptación del modelo de negocio y Business Model CanvasFlan *
Este documento discute la adaptación de modelos de negocio existentes. Explica que copiar modelos exitosos y adaptarlos a una nueva cultura, industria u otros factores es una forma de evolucionar un modelo de negocio. Revisa el Business Model Canvas como una herramienta para analizar y adaptar los nueve componentes clave de un modelo de negocio: segmentos de mercado, propuesta de valor, canales, relaciones con clientes, fuentes de ingresos, recursos clave, actividades clave, asociaciones clave y estructura de costes
Este documento presenta información sobre una tienda llamada Tienda Carlitos a través de organigramas, diagramas y tablas. Incluye un organigrama principal de la tienda, diagramas de jerarquía, de primer y segundo nivel, y tablas de datos de clientes, productos, empleados y facturas para analizar la estructura y procesos de la empresa. El objetivo es automatizar el proceso de facturación.
La microempresa Calzado Sarita se fundó en 1974 en Quito, Ecuador y se dedica a la distribución de calzado casual y deportivo. Actualmente cuenta con dos locales en un centro comercial de la ciudad con un total de 6 empleados. Su objetivo es ofrecer calzado de alta calidad a sus clientes y posicionarse como líder en el mercado local de calzado.
La microempresa Calzado Sarita se fundó en 1974 y se dedica a la distribución de calzado casual y deportivo. Actualmente cuenta con dos locales en un centro comercial de Quito y emplea a 6 personas. Vende calzado, que es un bien normal, y tiene competidores sustitutos. Su estructura organizacional incluye departamentos de ventas, compras y almacenaje, cada uno con funciones específicas.
Repaso de los contenidos del examen del ii parcial administracion generalLISBETHSARAIMALDONAD1
Este documento presenta una revisión de contenidos para un examen de Administración General, incluyendo temas como la presentación de un negocio, conocer a los clientes y competidores, fijación de precios, publicidad, planeación, organización, control y presupuesto. También cubre temas de organización como organigramas y nómina, así como costos y determinación de precios.
Presentación Fairway enfocada en Inbound Marketing para proyectos turísticos. Consejos y mejoras para estructurar tu estrategia de marketing de tu proyecto turístico.
CYL Contadores Ltda ofrece servicios de asesoría contable, tributaria y laboral a pymes mediante el uso de tecnología. La empresa fue fundada en 1995 por contadores especializados en áreas tributaria y laboral. Ofrece módulos en línea para el ingreso de información contable, tributaria y de remuneraciones, y la generación de informes. Los valores de sus servicios van desde $50.000 para micropymes hasta $250.000 para pymes medianas con sucursales.
El documento presenta una guía para diseñar un modelo de negocios exitoso. Explica que un modelo de negocios debe definir el valor que se ofrece a los clientes, los canales de distribución, las relaciones con los clientes, y los flujos de ingresos. Además, debe considerar los recursos clave, las actividades principales, las redes de socios y la estructura de costos. El documento proporciona ejemplos de modelos de negocios populares como el modelo de larga cola y los modelos gratuitos o de suscripción
El documento habla sobre el barter o trueque corporativo, que es el intercambio de activos de una empresa como productos o servicios por publicidad y acciones de marketing. Explica que esto permite a las empresas maximizar el valor de sus activos cuando tienen presupuestos reducidos, y que Media & Barter es una empresa española que ofrece estos servicios de intercambio y remarketing de los activos.
Taller práctico de Marketing Online aplicado a la empresa en Albatera Emprende📊 Isidro Pérez Ramón
Este documento presenta una guía paso a paso para el marketing online aplicado a una empresa. Explica cómo analizar el mercado y público objetivo, definir el producto o servicio, crear una landing page para captar leads, y promover la campaña a través de SEO, publicidad en redes sociales, email marketing y más. El objetivo final es generar leads, ventas, satisfacción de clientes y resultados positivos para la empresa.
Curso de Estrategias de Distribución y Canales 03 La Distribución y sus Dimen...LEOnardo AMARaldo DELgado
La distribución sus dimensiones y sistemas
Las 2 dimensiones de la distribución
Maneras de ORGANIZAR un SISTEMA VERTICAL
SISTEMAS VERTICALES
SISTEMAS HORIZONTALES
Estructura del departamento comercial para la distribución
Travel Advisors oct2010 Bilbao conocimientoMindProject
El documento discute los desafíos de rediseñar los modelos de negocio de la intermediación turística en la era digital. Explica que el acceso a la información está impulsando cambios en los modelos de negocio, los cuales deben centrarse en controlar la información. Presenta el lienzo de modelo de negocio de Osterwalder como una herramienta para rediseñar los modelos de negocio, considerando factores como los segmentos de clientes, canales, propuesta de valor y flujos financieros. Concluye que no habr
Este documento resume los conceptos clave de un estudio de mercado. Explica los objetivos de un estudio de mercado, los tipos de información que se pueden recopilar como encuestas y paneles, y cómo se clasifican los bienes y servicios. También describe los pasos que un analista debe seguir para analizar la estructura de mercado, incluida la segmentación, demanda, competencia y canales de distribución.
Coopaliments es una empresa productiva colombiana que busca apoyar a pequeños agricultores y vendedores ambulantes mediante la compra y comercialización de productos agrícolas en Bogotá. Su misión es satisfacer las necesidades básicas de la población de manera integral mientras genera empleo rural. El estudio de mercado muestra una demanda insatisfecha de productos agrícolas de calidad en la localidad, por lo que la empresa ofrecerá una variedad de frutas, verduras y tubérculos de regiones como Boyacá, Ant
Coopaliments es una empresa productiva colombiana que busca apoyar a pequeños agricultores y vendedores ambulantes, logrando estabilidad en sus ingresos. La empresa ofrecerá productos agrícolas de alta calidad en Bogotá, trabajando directamente con fincas en Boyacá, Antioquia y Quindío para obtener una gran variedad de productos. El estudio de mercado muestra que existe una demanda insatisfecha que la empresa podrá cubrir de manera rentable.
El documento argumenta que las agencias de publicidad deben enfocarse más en la creatividad y estrategia para recuperar la confianza de los anunciantes. Sugiere que las agencias utilicen su talento creativo para analizar los mercados y necesidades de comunicación de los clientes de nuevas formas, e involucren más a los departamentos creativos en todo el proceso de marketing. También recomienda incrementar los recursos creativos de las agencias y cobrar más por servicios que permitan a la creatividad influir en todos los niveles del neg
Este documento resume la función comercial de las empresas a través de la historia. Explica conceptos clave como la actividad comercial, el departamento comercial, los tipos de mercados y competencia, el estudio de mercado, y los elementos del marketing como el producto, precio, plaza y promoción. Finalmente, detalla las etapas de un plan de marketing.
Trabajo sobre la Franquicia. Asignatura: Modelos de Internacionalización de la Empresa, asignatura impartida en el Máster Oficial de Comercio Exterior de la Universidad de Valladolid. Profesor: D. Luis Óscar Ramos Alonso.
Se muestran 18 de las 41 páginas posibles.
Más información en: https://www.linkedin.com/profile/preview?vpa=pub&locale=es_ES
http://blogmisproyetosuniversitarios-carlos.blogspot.com.es/
Semana 4 - Go to market, márgenes, Push y Pull.pdffernanduca191817
Este documento presenta información sobre un curso de Canales de Distribución y Trade en la Facultad de Comunicaciones de la UPC. Se detalla el temario de una sesión que incluye márgenes del fabricante e intermediarios, así como políticas de precios. Además, se explican conceptos clave relacionados a la ruta de mercado de los productos, como canales de distribución, márgenes, precios de lista y descuentos. Finalmente, se incluyen ejemplos numéricos para calcular márgenes usando los métodos de mark up y
Repaso de los contenidos del examen del ii parcial emprendimiento 1 y 2LISBETHSARAIMALDONAD1
Este documento presenta una revisión de los contenidos de un examen parcial de emprendimiento. Incluye definiciones y conceptos clave como la presentación de un negocio, el perfil del negocio, conocer a los clientes, competidores, fijación de precios, publicidad, planeación, organización, presupuesto y más. También cubre temas como tipos de envases, proveedores, determinación de precios y estructura organizacional.
Allstartup. Adaptación del modelo de negocio y Business Model CanvasFlan *
Este documento discute la adaptación de modelos de negocio existentes. Explica que copiar modelos exitosos y adaptarlos a una nueva cultura, industria u otros factores es una forma de evolucionar un modelo de negocio. Revisa el Business Model Canvas como una herramienta para analizar y adaptar los nueve componentes clave de un modelo de negocio: segmentos de mercado, propuesta de valor, canales, relaciones con clientes, fuentes de ingresos, recursos clave, actividades clave, asociaciones clave y estructura de costes
Este documento presenta información sobre una tienda llamada Tienda Carlitos a través de organigramas, diagramas y tablas. Incluye un organigrama principal de la tienda, diagramas de jerarquía, de primer y segundo nivel, y tablas de datos de clientes, productos, empleados y facturas para analizar la estructura y procesos de la empresa. El objetivo es automatizar el proceso de facturación.
La microempresa Calzado Sarita se fundó en 1974 en Quito, Ecuador y se dedica a la distribución de calzado casual y deportivo. Actualmente cuenta con dos locales en un centro comercial de la ciudad con un total de 6 empleados. Su objetivo es ofrecer calzado de alta calidad a sus clientes y posicionarse como líder en el mercado local de calzado.
La microempresa Calzado Sarita se fundó en 1974 y se dedica a la distribución de calzado casual y deportivo. Actualmente cuenta con dos locales en un centro comercial de Quito y emplea a 6 personas. Vende calzado, que es un bien normal, y tiene competidores sustitutos. Su estructura organizacional incluye departamentos de ventas, compras y almacenaje, cada uno con funciones específicas.
Repaso de los contenidos del examen del ii parcial administracion generalLISBETHSARAIMALDONAD1
Este documento presenta una revisión de contenidos para un examen de Administración General, incluyendo temas como la presentación de un negocio, conocer a los clientes y competidores, fijación de precios, publicidad, planeación, organización, control y presupuesto. También cubre temas de organización como organigramas y nómina, así como costos y determinación de precios.
Presentación Fairway enfocada en Inbound Marketing para proyectos turísticos. Consejos y mejoras para estructurar tu estrategia de marketing de tu proyecto turístico.
CYL Contadores Ltda ofrece servicios de asesoría contable, tributaria y laboral a pymes mediante el uso de tecnología. La empresa fue fundada en 1995 por contadores especializados en áreas tributaria y laboral. Ofrece módulos en línea para el ingreso de información contable, tributaria y de remuneraciones, y la generación de informes. Los valores de sus servicios van desde $50.000 para micropymes hasta $250.000 para pymes medianas con sucursales.
El documento presenta una guía para diseñar un modelo de negocios exitoso. Explica que un modelo de negocios debe definir el valor que se ofrece a los clientes, los canales de distribución, las relaciones con los clientes, y los flujos de ingresos. Además, debe considerar los recursos clave, las actividades principales, las redes de socios y la estructura de costos. El documento proporciona ejemplos de modelos de negocios populares como el modelo de larga cola y los modelos gratuitos o de suscripción
El documento habla sobre el barter o trueque corporativo, que es el intercambio de activos de una empresa como productos o servicios por publicidad y acciones de marketing. Explica que esto permite a las empresas maximizar el valor de sus activos cuando tienen presupuestos reducidos, y que Media & Barter es una empresa española que ofrece estos servicios de intercambio y remarketing de los activos.
Taller práctico de Marketing Online aplicado a la empresa en Albatera Emprende📊 Isidro Pérez Ramón
Este documento presenta una guía paso a paso para el marketing online aplicado a una empresa. Explica cómo analizar el mercado y público objetivo, definir el producto o servicio, crear una landing page para captar leads, y promover la campaña a través de SEO, publicidad en redes sociales, email marketing y más. El objetivo final es generar leads, ventas, satisfacción de clientes y resultados positivos para la empresa.
Curso de Estrategias de Distribución y Canales 03 La Distribución y sus Dimen...LEOnardo AMARaldo DELgado
La distribución sus dimensiones y sistemas
Las 2 dimensiones de la distribución
Maneras de ORGANIZAR un SISTEMA VERTICAL
SISTEMAS VERTICALES
SISTEMAS HORIZONTALES
Estructura del departamento comercial para la distribución
Travel Advisors oct2010 Bilbao conocimientoMindProject
El documento discute los desafíos de rediseñar los modelos de negocio de la intermediación turística en la era digital. Explica que el acceso a la información está impulsando cambios en los modelos de negocio, los cuales deben centrarse en controlar la información. Presenta el lienzo de modelo de negocio de Osterwalder como una herramienta para rediseñar los modelos de negocio, considerando factores como los segmentos de clientes, canales, propuesta de valor y flujos financieros. Concluye que no habr
Este documento resume los conceptos clave de un estudio de mercado. Explica los objetivos de un estudio de mercado, los tipos de información que se pueden recopilar como encuestas y paneles, y cómo se clasifican los bienes y servicios. También describe los pasos que un analista debe seguir para analizar la estructura de mercado, incluida la segmentación, demanda, competencia y canales de distribución.
Coopaliments es una empresa productiva colombiana que busca apoyar a pequeños agricultores y vendedores ambulantes mediante la compra y comercialización de productos agrícolas en Bogotá. Su misión es satisfacer las necesidades básicas de la población de manera integral mientras genera empleo rural. El estudio de mercado muestra una demanda insatisfecha de productos agrícolas de calidad en la localidad, por lo que la empresa ofrecerá una variedad de frutas, verduras y tubérculos de regiones como Boyacá, Ant
Coopaliments es una empresa productiva colombiana que busca apoyar a pequeños agricultores y vendedores ambulantes, logrando estabilidad en sus ingresos. La empresa ofrecerá productos agrícolas de alta calidad en Bogotá, trabajando directamente con fincas en Boyacá, Antioquia y Quindío para obtener una gran variedad de productos. El estudio de mercado muestra que existe una demanda insatisfecha que la empresa podrá cubrir de manera rentable.
Similar a Sobreescritura y extensión de validaciones, formularios y entidades (20)
En 1974 la Crónica de la Organización Mundial de la
Salud publicó un importante artículo llamando la atención
sobre la importancia de la deficiencia de yodo como problema
de la salud pública y la necesidad de su eliminación, escrito por
un grupo de académicos expertos en el tema, Prof. JB Stanbury
de la Universidad de Harvard, Prof. AM Ermans del Hospital
Saint Pierre, Bélgica, Prof. BS Hetzel de la Universidad de
Monash, Australia, Prof. EA Pretell de la Universidad Peruana
Cayetano Heredia, Perú, y Prof. A Querido del Hospital
algunos casos de tirotoxicosis y el temor a su extensión con
(18)
distribución amplia de yodo . Recién a partir de 1930 varios
(19)
investigadores, entre los que destaca Boussingault , volvieron
a insistir sobre este tema, aconsejando la yodación de la sal para
su uso terapéutico.
Desórdenes por deficiencia de yodo en el Perú
Universitario, Leiden, Holanda .
(15)
En el momento actual hay suficiente evidencia que
demuestra que el impacto social de los desórdenes por
deficiencia de yodo es muy grande y que su prevención resulta
en una mejor calidad de vida y de la productividad, así como
también de la capacidad de educación de los niños y adultos.
Prevención y tratamiento de los DDI
Los desórdenes por deficiencia de yodo pueden ser
exitosamente prevenidos mediante programas de suplementa-
ción de yodo. A través de la historia se han ensayado varios
medios para tal propósito, pero la estrategia más costo-efectiva
y sostenible es el consumo de sal yodada. Los experimentos de
Marine y col.
(16, 17)
entre 1907 a 1921 probaron que la deficiencia
y la suplementación de yodo eran factores dominantes en la
etiología y el control del bocio endémico. El uso experimental
de la sal yodada para la prevención del bocio endémico se llevó
a cabo en Akron, Ohio, con resultados espectaculares y fue
seguida por la distribución de sal yodada en Estados Unidos,
Suiza y otros lugares. El uso clínico de este método, sin
embargo, fue largamente postergado por la ocurrencia de
La presencia de bocio y cretinismo en el antiguo Perú
antecedió a la llegada de los españoles, según comentarios en
crónicas y relatos de la época de la Conquista y el Virreinato. En
(20)
una revisión publicada por JB Lastres se comenta que Cosme
Bueno (1769), refiriéndose a sus observaciones entre los
habitantes del altiplano, escribió “los más de los que allí habitan
son contrahechos, jibados, tartamudos, de ojos torcidos y con
unos deformes tumores en la garganta, que aquí llaman cotos y
otras semejantes deformidades en el cuerpo y sus corres-
pondientes en el ánimo”. Y es lógico aceptar como cierto este
hecho, dado que la deficiencia de yodo en la Cordillera de los
Andes es un fenómeno ambiental permanente desde sus
orígenes.
Luego de la Independencia hasta los años 1950s, la
persistencia del bocio y el cretinismo endémicos en la sierra y la
selva fue reportada por varios autores, cuyos importantes
(20)
26. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
EcommerceBundle
PurchasableType
- name
- price
- ...
UserBundle
simple shopping cart
UserType
- username
- ...
AppBundle
VendorApp
CarType
- color
- ...
UserType
- city
- ...
27. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
EcommerceBundle
PurchasableType
- name
- price
- ...
UserBundle
simple shopping cart
UserType
- username
- ...
AppBundle
VendorApp
CarType
- color
- ...
UserType
- city
- ...
28. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
services:
user_bundle.form.type.usr:
class: UserBundleFormTypeUserType
arguments: ["@my_service"]
tags:
- { name: form.type }
29. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
services:
user_bundle.form.type.usr:
class: UserBundleFormTypeUserType
arguments: ["@my_service"]
tags:
- { name: form.type }
Como un servicio
42. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
Es el modo en que Symfony2 permite
interactuar con los servicio y parámetros
definidos globalmente y de los bundles
cuando han sido cargados, pero antes
de que se hayan compilado y
optimizados en el DependencyInjection
Component (DIC)
43. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
services:
reusable_bundle.form.type.product:
class: ReusableBundleFormTypeProductType
arguments: ["@my_service"]
tags:
- { name: form.type }
44. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
// src/Acme/ReusableBundle/DependencyInjection/Compiler/OverrideServiceCompilerPass.php
namespace AcmeReusableBundleDependencyInjectionCompiler;
use SymfonyComponentDependencyInjectionCompilerCompilerPassInterface;
use SymfonyComponentDependencyInjectionContainerBuilder;
class OverrideServiceCompilerPass implements CompilerPassInterface
{
public function process(ContainerBuilder $container)
{
$definition = $container->getDefinition('reusable_bundle.form.type.product');
$definition->setClass('AcmeDemoBundleFormMyProductType');
}
}
45. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
// src/Acme/ReusableBundle/DependencyInjection/Compiler/OverrideServiceCompilerPass.php
namespace AcmeReusableBundleDependencyInjectionCompiler;
use SymfonyComponentDependencyInjectionCompilerCompilerPassInterface;
use SymfonyComponentDependencyInjectionContainerBuilder;
class OverrideServiceCompilerPass implements CompilerPassInterface
{
public function process(ContainerBuilder $container)
{
$definition = $container->getDefinition('reusable_bundle.form.type.product');
$definition->setClass('AcmeDemoBundleFormMyProductType');
}
}
46. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
// src/Acme/ReusabeBundle/AcmeReusableBundle.php
class AcmeReusableBundle extends Bundle
{
/**
* @param ContainerBuilder $container
*/
public function build(ContainerBuilder
$container)
{
$container->addCompilerPass(
new OverrideServiceCompilerPass()
);
}
}
49. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
EcommerceBundle
PurchasableType
- name
- price
- ...
UserBundle
simple shopping cart
UserType
- username
- ...
AppBundle
VendorApp
CarType
- color
- ...
UserType
- city
- ...
50. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
class MyBookType extends AbstractType
{
...
public function getParent()
{
return PurchasableType::class;
}
}
51. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
class MyBookType extends PurchasableType
{
...
}
class MyBookType extends AbstractType
{
...
public function getParent()
{
return PurchasableType::class;
}
}
Vs
52. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
abstract class AbstractType implements FormTypeInterface
{
public function buildForm(FormBuilderInterface $builder, array
$options);
public function buildView(FormView $view, FormInterface $form,
array $options);
public function finishView(FormView $view, FormInterface $form,
array $options);
public function configureOptions(OptionsResolver $resolver);
public function getBlockPrefix();
public function getParent();
}
53. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
abstract class PurchasableType implements FormTypeInterface
{
public function buildForm(FormBuilderInterface $builder, array
$options);
public function buildView(FormView $view, FormInterface $form,
array $options);
public function finishView(FormView $view, FormInterface $form,
array $options);
public function configureOptions(OptionsResolver $resolver);
public function getBlockPrefix();
public function getParent();
}
64. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
“Symfony loads all validation configuration
files from every bundle and combines them
into one validation metadata tree. This
means you are able to add new constraints
to a property, but you cannot override
them.”
65. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
“To override this, the 3rd party
bundle needs to have
configuration for validation
groups.”
89. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
- “Dos grupos por defecto”:
- { NombreClase, Default }
- Si se especifica un grupo, NO se
añaden “los por defecto”
90. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
Warning!
- Si se valida una clase con el grupo de
validación del nombre de la clase y las
relaciones también se validan.
93. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
¿Recordamos lo que hemos
hablado de formularios y
servicios?
94. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
acme_reusable:
user:
form:
type: AcmeReusableBundleFormTypeUserType
validation_groups: [registration, Default]
95. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
class FormFactory implements FactoryInterface
{
private $formFactory;
private $name;
private $type;
private $validationGroups;
public function __construct(FormFactoryInterface $formFactory,
$name, $type, array $validationGroups = null)
{
$this->formFactory = $formFactory;
$this->name = $name;
$this->type = $type;
$this->validationGroups = $validationGroups;
}
public function createForm(array $options = array())
{
$options = array_merge(array('validation_groups' =>
$this->validationGroups), $options);
return $this->formFactory->createNamed($this->name, $this->type,
null, $options);
}
}
96. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
class FormFactory implements FactoryInterface
{
private $formFactory;
private $name;
private $type;
private $validationGroups;
public function __construct(FormFactoryInterface $formFactory,
$name, $type, array $validationGroups = null)
{
$this->formFactory = $formFactory;
$this->name = $name;
$this->type = $type;
$this->validationGroups = $validationGroups;
}
public function createForm(array $options = array())
{
$options = array_merge(array('validation_groups' =>
$this->validationGroups), $options);
return $this->formFactory->createNamed($this->name, $this->type,
null, $options);
}
}
97. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
class FormFactory implements FactoryInterface
{
private $formFactory;
private $name;
private $type;
private $validationGroups;
public function __construct(FormFactoryInterface $formFactory,
$name, $type, array $validationGroups = null)
{
$this->formFactory = $formFactory;
$this->name = $name;
$this->type = $type;
$this->validationGroups = $validationGroups;
}
public function createForm(array $options = array())
{
$options = array_merge(array('validation_groups' =>
$this->validationGroups), $options);
return $this->formFactory->createNamed($this->name, $this->type,
null, $options);
}
}
98. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
<service id="acme_reusable.user.form.factory"
class="AcmeReusableBundleFormFactoryFormFactory">
<argument type="service" id="form.factory" />
<argument>%acme_reusable.user.form.name%</argument>
<argument>%acme_reusable.user.form.type%</argument>
<argument>%acme_reusable.user.form.validation_groups%</argument>
</service>
99. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
$formFactory = $this->get(acme_reusable.user.form.factory');
$form = $formFactory->createForm();
116. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
Due to the way Doctrine works, it is not
possible to override entity mapping of a
bundle. However, if a bundle provides a
mapped superclass (such as the User entity
in the FOSUserBundle) one can override
attributes and associations. Learn more
about this feature and its limitations in the
Doctrine documentation.
http://symfony.com/doc/current/cookbook/bundles/override.html#entities-entity-mapping
122. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
# Resources/config/doctrine/User.orm.xml
<doctrine-mapping ...>
<mapped-superclass name="FOSUserBundleEntityUser">
...
<field
name="username"
column="username"
type="string"
length="255" />
…
</mapped-superclass>
</doctrine-mapping>
XML:
123. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
# Resources/config/doctrine/User.orm.yml
DoctrineTestsORMMappingUser:
type: entity
table: cms_users
...
fields:
username:
type: string
length: 50
...
YML:
124. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
<?php
/** @Entity */
class User
{
/** @Column(type="string", length=100) */
private $username;
...
}
Annotations:
125. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
Mapping:
En un bundle no pueden
convivir formatos
XML > YML > Annotations
127. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
Clase Abstracta o concreta
Su finalidad es definir información de mapeo que van a
heredar otras entidades
Mapped-Superclass:
128. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
# Model/User.php
abstract class User
{
protected $username;
…
}
# Resources/config/doctrine-mapping/User.orm.xml
<mapped-superclass name="FOSUserBundleModelUser">
<field name="username"
column="username"
type="string"
length="180" />
…
</mapped-superclass>
130. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
AppBundle
UserBundle EcommerceBundle
Primera aproximación
AbstractCart
- user
- createdAt
- ...
AbstractCartLine
- cart
- purchasable
- quantity
- ...
AbstractPurchasable
- name
- price
- ...
AbstractUser
- username
- ...
Cart
- ...
CartLine
- ...
Product
- ...
User
- ...
VendorApp
131. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
Primera aproximación
Pero....
- Obligamos a extender todas las entidades
- Obligamos a escribir el mapeo de las relaciones
133. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
UserBundle EcommerceBundle
Segunda aproximación
AbstractCart
- user
- createdAt
- ...
AbstractCartLine
- cart
- purchasable
- quantity
- ...
AbstractPurchasable
- name
- price
- ...
AbstractUser
- username
- ...
Cart
- ...
CartLine
- ...
Product
- ...
User
- ...
Vendor
134. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
AppBundle
UserBundle EcommerceBundle
Segunda aproximación
CÓMO CREAR THIRD PARTY BUNDLES DE SYMFONY COMPLETAMENTE EXTENSIBLES Y SOBREESCRIBIBLES
AbstractCart
- user
- createdAt
- ...
AbstractCartLine
- cart
- purchasable
- quantity
- ...
AbstractPurchasable
- name
- price
- ...
AbstractUser
- username
- ...
Cart
- ...
CartLine
- ...
Product
- ...
User
- ...
VendorApp
Cart
- ...
135. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
Segunda aproximación
CÓMO CREAR THIRD PARTY BUNDLES DE SYMFONY COMPLETAMENTE EXTENSIBLES Y SOBREESCRIBIBLES
● Ofrecer clases concretas en el bundle
● Permitir que por parámetros en la capa de aplicación se
indique qué clases concretas usar
136. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
Segunda aproximación
CÓMO CREAR THIRD PARTY BUNDLES DE SYMFONY COMPLETAMENTE EXTENSIBLES Y SOBREESCRIBIBLES
● Ofrecer clases concretas en el bundle
● Permitir que por parámetros en la capa de aplicación se
indique qué clases concretas usar
Implica....
● Que el bundle decida si tiene que mapear o no las entidades
concretas
● Establecer dinámicamente las relaciones entre entidades
138. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
Auto Mapping
- Doctrine busca entidades en la carpeta Entity de todos los
bundles
139. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
Auto Mapping
- Doctrine busca entidades en la carpeta Entity de todos los
bundles
- Busca la información de mapeo en
- Resources/config/doctrine/
- Anotaciones
140. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
Auto Mapping
- Doctrine busca entidades en la carpeta Entity de todos los
bundles
- Busca la información de mapeo en
- Resources/config/doctrine/
- Anotaciones
- Activado por defecto, pero nuestro bundle tiene que
funcionar independientemente de su estado.
141. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
Solución:
- Mover las entidades concretas del bundle a otro directorio
- Ej.: Model
- Mover la información de mapeo
- Ej.: Resource/config/doctrine-model
Segunda aproximación
142. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
¿Cómo mapeo las entidades?
Segunda aproximación
144. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
$container->addCompilerPass(
new DoctrineOrmMappingsPass(
$driver, //DoctrineORMMappingDriverXmlDriver
array('AcmeReusableBundleModelCart'),
array('doctrine.default_entity_manager'),
"boolean_param_name"
)
);
Segunda aproximación
145. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
$container->addCompilerPass(
new DoctrineOrmMappingsPass(
$driver, //DoctrineORMMappingDriverXmlDriver
array('AcmeReusableBundleModelCart'),
array('acme_reusable.model_manager_name'),
"acme_reusable.tengo_que_mapear_la_clase_cart"
)
);
Segunda aproximación
146. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
AbstractCart
- user
- createdAt
- ...
AppBundle
UserBundle EcommerceBundle
Segunda aproximación
AbstractCartLine
- cart
- purchasable
- quantity
- ...
AbstractPurchasable
- name
- price
- ...
AbstractUser
- username
- ...
Cart
- ...
CartLine
- ...
Product
- ...
User
- ...
VendorApp
Cart
- ...
148. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
# Resources/config/doctrine-base/AbstractCartLine.orm.xml
<mapped-superclass
name="AcmeReusableBundleModelAbstractCartLine">
...
<many-to-one
target-entity="AcmeReusableBundleEntityAbstractPurchasable"
field="purchasable" />
<many-to-one
target-entity="AcmeReusableBundleModelInterfacesCartInterface"
inversed-by="cartLines"
field="cart"/>
...
</mapped-superclass>
Segunda aproximación
149. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
# Resources/config/doctrine-base/AbstractCartLine.orm.xml
<mapped-superclass
name="AcmeReusableBundleModelAbstractCartLine">
...
<many-to-one
target-entity="AcmeReusableBundleEntityAbstractPurchasable"
field="purchasable" />
<many-to-one
target-entity="AcmeReusableBundleModelInterfacesCartInterface"
inversed-by="cartLines"
field="cart"/>
...
</mapped-superclass>
Segunda aproximación
150. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
# app/config/config.yml
doctrine:
orm:
resolve_target_entities:
CartInterface: AppBundleEntityCart
Segunda aproximación
151. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
# DependencyInjection/AcmeReusableExtension.php
public function prepend(ContainerBuilder $container)
{
…
$doctrineConfig = array(
'orm' => array(
'resolve_target_entities' => array(
'CartInterface' => $config['class']['cart'],
),
),
);
$container->prependExtensionConfig('doctrine', $doctrineConfig);
...
}
Segunda aproximación
CÓMO CREAR THIRD PARTY BUNDLES DE SYMFONY COMPLETAMENTE EXTENSIBLES Y SOBREESCRIBIBLES
152. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
AppBundle
UserBundle EcommerceBundle
Segunda aproximación
AbstractCart
- user
- createdAt
- ...
AbstractCartLine
- cart
- purchasable
- quantity
- ...
AbstractPurchasable
- name
- price
- ...
AbstractUser
- username
- ...
Cart
- ...
CartLine
- ...
Product
- ...
User
- ...
VendorApp
Cart
- ...
153. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
# Resources/config/doctrine-base/AbstractCartLine.orm.xml
<mapped-superclass name="AbstractCartLine">
...
<many-to-one
target-entity="CartInterface"
inversed-by="cartLines"
field="cart" />
...
</mapped-superclass>
Segunda aproximación
154. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
# Resources/config/doctrine-base/AbstractCart.orm.xml
<mapped-superclass name="AcmeReusableBundleEntityAbstractCart">
...
<one-to-many
field="cartLines"
target-entity="CartLineInterface"
mapped-by="cart"
/>
...
</mapped-superclass>
Segunda aproximación
155. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
# Resources/config/doctrine-base/AbstractCart.orm.xml
<mapped-superclass name="AcmeReusableBundleEntityAbstractCart">
...
<one-to-many
field="cartLines"
target-entity="CartLineInterface"
mapped-by="cart"
/>
...
</mapped-superclass>
Segunda aproximación
No se puede
160. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
Resumiendo:
- Usamos DoctrineOrmMappingPass para mapear las clases
concretas de nuestro bundle, en función de los parámetros de
configuración
Segunda aproximación
161. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
Resumiendo:
- Usamos DoctrineOrmMappingPass para mapear las clases
concretas de nuestro bundle, en función de los parámetros de
configuración
- Apuntamos las relaciones de las clases abstractas hacia
Interfaces, para poder hacer que se apunte a la clase de
destino con resolve_target_entity
Segunda aproximación
162. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
Resumiendo:
- Usamos DoctrineOrmMappingPass para mapear las clases
concretas de nuestro bundle, en función de los parámetros de
configuración
- Apuntamos las relaciones de las clases abstractas hacia
Interfaces, para poder hacer que se apunte a la clase de
destino con resolve_target_entity
- Usamos el evento loadClassMetadata para completar las
relaciones bidireccionales
Segunda aproximación
163. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
AppBundle
UserBundle EcommerceBundle
CartLine
- cart
- purchasable
- quantity
- ...
AbstractPurchasable
- name
- price
- ...
Segunda aproximación
User
- username
- ...
Cart
- customField
164. SOBREESCRITURA Y EXTENSIÓN DE VALIDADORES, FORMULARIOS Y ENTIDADES
Un ejemplo:
https://github.com/dualhand/ReusableBundle
https://github.com/dualhand/example-app