Castellón - 5 y 6 de Julio 2010 – Universitat Jaume I organizan patrocinan colaboran Jornadas Symfony 5 y 6 de julio 2010 ...
tr Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony hacemos Webs!
Jornadas Symfony 5 y 6 de julio 2010 Universitat Jaume I, Castellón http://decharlas.uji.es/symfony Domesticando las vista...
Jornadas Symfony  http://decharlas.uji.es/symfony Presentación CTO Acilia Internet Madrid Jornadas Symfony  http://decharl...
Jornadas Symfony  http://decharlas.uji.es/symfony Presentación Proyectos con Symfony Jornadas Symfony  http://decharlas.uj...
Jornadas Symfony  http://decharlas.uji.es/symfony Presentación Proyectos con Symfony Jornadas Symfony  http://decharlas.uj...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Domesticando las Vista...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Contenido Los Template...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Contenido Procesando l...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Los Templates
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Como empezó todo Pues ...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony MVC Request Controller...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Templates apps/fronten...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Templates <?php  use_h...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Templates Helpers <?ph...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Templates Helpers de S...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Templates Helpers Prop...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Layout
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Layout apps/frontend/ ...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Variables del Template
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Variables del Template...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Fragmentos de códigos
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Fragmentos de códigos ...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Partials
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Fragmentos de códigos ...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Fragmentos de códigos ...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Components
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Fragmentos de códigos ...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony <?php  use_helper( 'I1...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Slots
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Fragmentos de códigos ...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Fragmentos de códigos ...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Configuración del Layo...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony default : http_metas :...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony all : … showSuccess : ...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Acceso al objeto Respo...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Acceso al objeto Respo...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Acceso al objeto Respo...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Conversión de variable...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Escaping Output Conver...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Escaping Output Conver...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Escaping Output Conver...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Respuestas del Action
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Respuestas del Action ...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Contenido Los Template...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Procesando las Vistas
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Cadena de Ejecución 36px
Request Controller Response Jornadas Symfony  http://decharlas.uji.es/symfony Model Views
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Cadena de Ejecución <?...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony sfContex instance Symf...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony class sfExecutionFilte...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony sfContex instance Symf...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony sfExecutionFilter::exe...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony sfController::getView(...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony ¿Y esto porque es impo...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Pues para extender su ...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Cambiando la clase de ...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Cambiando la clase de ...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Cambiando la clase de ...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Las Clases
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony sfView, sfPHPView, sfP...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Inspeccionemos sfPHPVi...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony sfPHPView Class extend...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony sfPHPView Class extend...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony sfPHPView Class extend...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony sfPHPView Class extend...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony sfPHPView Class extend...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony sfPHPView Class extend...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony Muchas Gracias CTO Jos...
Jornadas Symfony  http://decharlas.uji.es/symfony Jornadas Symfony  http://decharlas.uji.es/symfony [email_address] http:/...
Upcoming SlideShare
Loading in...5
×

Symfony: Domesticando las Vistas

6,201

Published on

Domesticando las Vistas es una introducción y explicación a la capa de abstracción de Vistas del framework Symfony en PHP.

Published in: Technology, Design
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
6,201
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
106
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
  • Symfony: Domesticando las Vistas

    1. 1. Castellón - 5 y 6 de Julio 2010 – Universitat Jaume I organizan patrocinan colaboran Jornadas Symfony 5 y 6 de julio 2010 Universitat Jaume I, Castellón http://decharlas.uji.es/symfony
    2. 2. tr Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony hacemos Webs!
    3. 3. Jornadas Symfony 5 y 6 de julio 2010 Universitat Jaume I, Castellón http://decharlas.uji.es/symfony Domesticando las vistas de symfony Jose Antonio Pio Acilia.es
    4. 4. Jornadas Symfony http://decharlas.uji.es/symfony Presentación CTO Acilia Internet Madrid Jornadas Symfony http://decharlas.uji.es/symfony Background + Estudie Ingeniería Electrónica + Empece a trabajar con internet en el 2001... y aquí sigo. + PHP y Ruby + CakePHP, Rails, CodeIgniter y Symfony 1.2 - 1.4
    5. 5. Jornadas Symfony http://decharlas.uji.es/symfony Presentación Proyectos con Symfony Jornadas Symfony http://decharlas.uji.es/symfony
    6. 6. Jornadas Symfony http://decharlas.uji.es/symfony Presentación Proyectos con Symfony Jornadas Symfony http://decharlas.uji.es/symfony notodohoteles.com, quiniela15.com (cache) CondeNast - Profesional Vogue GQ
    7. 7. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Domesticando las Vistas Contenido
    8. 8. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Contenido Los Templates + MVC + Templates + Layout + Variables del Template + Fragmentos de código (Partials, Components, Slots) + Configuración del Layout + Accesso al Objeto Response + Conversión de Variables de vista + Respuestas del Action
    9. 9. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Contenido Procesando las Vistas + Cadena de Ejecución + Cambiando la clase de Vista + Las Clases + sfPHPView Class
    10. 10. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Los Templates
    11. 11. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Como empezó todo Pues con un MVC
    12. 12. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony MVC Request Controller Response Model Views
    13. 13. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Templates apps/frontend/modules/ moduleName / templates /archivos.php
    14. 14. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Templates <?php use_helper( 'I18N' , 'Date' ) ?> <?php include_partial( 'attribute/assets' ) ?> < div id = &quot;sf_admin_container&quot; class = &quot;tab_sf_admin_container_attributes&quot; > < h1 > <?php echo __( 'Attribute List' , array (), 'messages' ) ?> </ h1 > < ul > < li >< a href = &quot;#sf_admin_content_list&quot; > <?php echo __( &quot;Categories&quot; ) ?> </ a ></ li > </ ul > < div id = &quot;sf_admin_content_list&quot; > <?php include_partial( 'attribute/flashes' ) ?> </ div > </ div > < script type = &quot;text/javascript&quot; > //Algo de Javascript </ script >
    15. 15. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Templates Helpers <?php use_helper( 'I18N' , 'Date' ) ?> <?php use_helper( 'HelperName' ) ?> <?php use_helper( 'HelperName1' , 'HelperName2' , 'HelperName3' ) ?> <?php echo __( 'Attribute List' , array (), 'messages' ) ?> <?php include_partial( 'attribute/flashes' ) ?> <?php echo url_for( &quot;attribute/list?parent_id=0&page=1&quot; ) ?>
    16. 16. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Templates Helpers de Symfony AssetHelper CacheHelper DateHelper EscapingHelper HelperHelper I18NHelper JavascriptBaseHelper NumberHelper PartialHelper TagHelper TextHelper UrlHelper http://www.symfony-project.org/api/1_4/helper use_helper( $date ) include_http_metas() include_metas() include_title() include_stylesheets() include_javascripts() include_partial ( $templateName , $vars ) format_date( $date , $format , $culture , $charset ) link_to( __( &quot;Signout&quot; ), url_for( '@sf_guard_signout' ) ) url_for( &quot;@attribute_attribute_new?parent_id= { $parent_id } &quot; )
    17. 17. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Templates Helpers Propios apps/frontend/lib/helper/NombreHelper.php <?php function previewObject( $object ) { } <?php use_helper( 'Nombre' ) ?> ... <?php echo previewObject( $object ) ?>
    18. 18. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Layout
    19. 19. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Layout apps/frontend/ templates /layout.php Layout Template <! DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot; > < html xmlns = &quot;http://www.w3.org/1999/xhtml&quot; > < head > < meta http-equiv = &quot;content-type&quot; content = &quot;text/html; charset=utf-8&quot; /> <?php include_http_metas() ?> <?php include_metas() ?> <?php include_title() ?> < link rel = &quot;shortcut icon&quot; href = &quot;/favicon.ico&quot; /> <?php include_stylesheets() ?> <?php include_javascripts() ?> </ head > < body > < div id = &quot;wrapper&quot; > <?php echo $sf_content ?> </ div > </ body > </ html >
    20. 20. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Variables del Template
    21. 21. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Variables del Template array ( 0 => 'sf_data', 1 => 'sf_type', 2 => 'sf_context', 3 => 'sf_request', 4 => 'sf_params', 5 => 'sf_response', 6 => 'sf_user', ) + $sf_data: Variables de la acción (Escapadas) + $sf_type: Tipo de Template que se está procesando (action, partial, layout) + $sf_context: la instancia de sfContext + $sf_request: El objeto Request (sfWebRequest) + $sf_params : Los parámetros pasados al objeto Request + $sf_response: El objeto Response (sfWebResponse) + $sf_user : El usuario actual
    22. 22. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Fragmentos de códigos
    23. 23. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Fragmentos de códigos Parcial + Inserta contenido con las variables especificadas en la llamada al helper. + Se usa extensivamente en el admin generator. + Tiene acceso limitado a las variables de la vista. (se puede hackear) Components + Contienen lógica de acción. Extiende la clase sfComponents. + Separa la lógica de presentación en partes. + Se pueden incluir en cualquier nivel de la definición de la vista: Layout, Templates, Components, Partials. Slots + Se usan para rellenar espacios con contenido dinámico. + Tiene acceso a las variables del template. + Se incluye despues de que se construye la vista.
    24. 24. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Partials
    25. 25. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Fragmentos de códigos Parcial public function executeIndex(sfWebRequest $request ){ $this ->variable = “Hola Mundo”; } apps/frontend/modules/moduleName/actions/ actions.class.php apps/frontend/modules/moduleName/templates/ indexSuccess.php < div id = &quot;sf_admin_content&quot; > <?php include_partial( 'moduleName/myPartial' , array ( 'variable' => $variable ) ) ?> </ div >
    26. 26. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Fragmentos de códigos Parcial < div id = &quot;sf_admin_container&quot; > < h1 > <?php echo $variable ?> </ h1 > </ div > apps/frontend/modules/moduleName/templates/ _myPartial.php
    27. 27. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Components
    28. 28. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Fragmentos de códigos Components class muduleNameComponents extends sfComponents{ public function executeTopRSS(sfWebRequest $request ){ $this ->external_RSS = new RSSConnect::fetch ( $date ); } } < h1 > Top RSS </ h1 > <?php foreach ( $external_RSS as $rss ): ?> < div class = &quot;rss_box&quot; > < div class = &quot;rss_title&quot; > <?php echo $rss ->title ?> </ div > </ div > <?php endforeach ; ?> apps/frontend/modules/moduleName/actions/ components.class.php apps/frontend/modules/moduleName/templates/ _topRSS.php
    29. 29. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony <?php use_helper( 'I18N' , 'Date' ) ?> <?php include_partial( 'attribute/assets' ) ?> < div id = &quot;sf_admin_container&quot; class = &quot;tab_sf_admin_container_attributes&quot; > < h1 > <?php echo __( 'Attribute List' , array (), 'messages' ) ?> </ h1 > < ul > < li >< a href = &quot;#sf_admin_content_list&quot; > <?php echo __( &quot;Categories&quot; ) ?> </ a ></ li > </ ul > < div id = &quot;sf_admin_content_list&quot; > <?php include_partial( 'attribute/flashes' ) ?> <?php include_component( 'moduleName' , 'topRSS' , array ( 'rssCount' => $external_RSS ->count() ) ) ?> </ div > </ div > Components Fragmentos de códigos apps/frontend/modules/ otherModuleName /templates/ indexSuccess.php
    30. 30. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Slots
    31. 31. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Fragmentos de códigos Slots apps/frontend/templates/ layout.php <! DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot; > < html xmlns = &quot;http://www.w3.org/1999/xhtml&quot; > < head ></ head > < body > < div id = &quot;content&quot; > < div class = &quot;header&quot; > < div class = &quot;logo&quot; > <?php echo link_to( image_tag( &quot;/images/logo.png&quot; ), &quot;/&quot; ) ?> </ div > <?php if (has_slot( 'virtual_logo' )): ?> < div class = &quot;logo_virtual&quot; > <?php include_slot( 'virtual_logo' ) ?> </ div > <?php else : ?> </ div > <?php echo $sf_content ?> </ div > </ body > </ html >
    32. 32. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Fragmentos de códigos class companyActions extends sfActions{ public function executeShow(sfWebRequest $request ){ ... $this ->company = Doctrine::getTable(“Company”)->find( $id ); } } apps/frontend/modules/ company /actions/ actions.class.php apps/frontend/modules/ company /templates/ showSuccess.php Slots < div class = &quot;company&quot; > <?php if ( $company ->hasLogo() ): ?> <?php slot( 'virtual_logo' ) ?> <?php echo $company ->renderLogo() ?> <?php end_slot() ?> <?php endif ; ?> </ div >
    33. 33. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Configuración del Layout
    34. 34. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony default : http_metas : content-type : text/html metas : title : My Project Title description : My project Description keywords : Keywords, Project, Etc language : en robots : index, follow stylesheets : [/stylesheets/style.css] javascripts : [ /javascripts/jquery-1.3.min.js, ... ] has_layout : on layout : layout apps/frontend/config/ view.yml Configuración del Layout
    35. 35. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony all : … showSuccess : metas : title : Company Show description : Company Show keywords : Companies, Company Show language : en robots : index, follow stylesheets : [/stylesheets/style.css, /css/company.css ] javascripts : [ /javascripts/jquery-1.3.min.js, ... ] has_layout : on layout : company apps/frontend/modules/ company /config/ view.yml Configuración del Layout
    36. 36. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Acceso al objeto Response
    37. 37. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Acceso al objeto Response public function executeShow(sfWebRequest $request ) { . .. $response = $this ->getResponse(); // Metas and page headers $response = $this ->getResponse(); if (! $this ->article->isMainDomain( $domain )){ $response ->addMeta( 'robots' , 'noindex, nofollow' ); } $response ->addMeta( 'keywords' , $this ->article->getMetaKeywords() ); $response ->addMeta( 'description' , $this ->article- >getMetaDescription( &quot;sub_title&quot; ) ); if ( $this ->article->html_meta_title){ $response ->setTitle(trim( $this ->article->html_meta_title). &quot; | { $domain ->name} &quot; ); } else { $response ->setTitle(trim( $this ->article->getTitle()). &quot; | { $domain ->name} &quot; ); } $response ->addStyleSheet( 'article' ); $response ->addJavaScript( 'article.js' ); }
    38. 38. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Acceso al objeto Response array ( 0 => '__call', 1 => '__construct', 2 => 'addCacheControlHttpHeader', 3 => 'addHttpMeta', 4 => 'addJavascript', 5 => 'addMeta', 6 => 'addStylesheet', 7 => 'addVaryHttpHeader', 8 => 'clearHttpHeaders', 9 => 'copyProperties', 10 => 'getCharset', 11 => 'getContent', 12 => 'getContentType', 13 => 'getCookies', 14 => 'getDate', 15 => 'getHttpHeader', 16 => 'getHttpHeaders', 17 => 'getHttpMetas', 18 => 'getJavascripts', 19 => 'getMetas', 20 => 'getOptions', 21 => 'getPositions', 22 => 'getSlots', 23 => 'getStatusCode', 24 => 'getStatusText', 25 => 'getStylesheets', 26 => 'getTitle', 27 => 'hasHttpHeader', 28 => 'initialize', 29 => 'isHeaderOnly', 30 => 'merge', 31 => 'removeJavascript', 32 => 'removeStylesheet', 33 => 'send', 34 => 'sendContent', 35 => 'sendHttpHeaders', 36 => 'serialize', 37 => 'setContent', 38 => 'setContentType', 39 => 'setCookie', 40 => 'setEventDispatcher', 41 => 'setHeaderOnly', 42 => 'setHttpHeader', 43 => 'setSlot', 44 => 'setStatusCode', 45 => 'setTitle', 46 => 'unserialize', )
    39. 39. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Conversión de variables de vista Escaping Output
    40. 40. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Escaping Output Conversión de variables de vista all : .settings : # Output escaping settings escaping_strategy : true escaping_method : ESC_SPECIALCHARS ## ESC_RAW, ESC_ENTITIES, ESC_JS, ESC_JS_NO_ENTITIES, and ESC_SPECIALCHARS. apps/frontend/config/settings.yml <?php echo $sf_data ->getRaw( 'image' )->tag( 320 , 480 ); ?> <?php echo $image ->getRawValue()->tag( 320 , 480 ) ; ?> <?php echo $sf_data ->get( 'image' )->name; ?> <?php echo $image ->name ; ?> apps/frontend/modules/moduleName/templates/algunTemplate.php
    41. 41. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Escaping Output Conversión de variables de vista <?php echo get_class( $test_array ) ?> < span > sfOutputEscaperArrayDecorator </ span > <?php echo get_class( $test_object ) ?> < span > sfOutputEscaperObjectDecorator </ span >
    42. 42. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Escaping Output Conversión de variables de vista array ( 0 => '__call', 1 => '__construct', 2 => '__get', 3 => '__toString', 4 => 'count', 5 => 'current', 6 => 'escape', 7 => 'get', 8 => 'getRaw', 9 => 'getRawValue', 10 => 'isClassMarkedAsSafe', 11 => 'key', 12 => 'markClassAsSafe', 13 => 'markClassesAsSafe', 14 => 'next', 15 => 'offsetExists', 16 => 'offsetGet', 17 => 'offsetSet', 18 => 'offsetUnset', 19 => 'rewind', 20 => 'unescape', 21 => 'valid', ) array ( 0 => '__construct', 1 => '__get', 2 => 'count', 3 => 'current', 4 => 'escape', 5 => 'get', 6 => 'getRaw', 7 => 'getRawValue', 8 => 'isClassMarkedAsSafe', 9 => 'key', 10 => 'markClassAsSafe', 11 => 'markClassesAsSafe', 12 => 'next', 13 => 'offsetExists', 14 => 'offsetGet', 15 => 'offsetSet', 16 => 'offsetUnset', 17 => 'rewind', 18 => 'unescape', 19 => 'valid', ) sfOutputEscaperObjectDecorator sfOutputEscaperArrayDecorator
    43. 43. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Respuestas del Action
    44. 44. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Respuestas del Action public function executeIndex() { return sfView::SUCCESS; // Corresponde indexSuccess.php return sfView::ERROR; // Corresponde indexError.php return 'MyResult' ; return $this ->renderText( &quot;<html><body>Hello, World!</body></html>&quot; ); $this ->getResponse()->setContent( &quot;<html><body>Hello, World!</body></html>&quot; ); return sfView::NONE; $output = '<&quot;title&quot;,&quot;My basic letter&quot;],[&quot;name&quot;,&quot;Mr Brown&quot;>' ; $this ->getResponse()->setHttpHeader( &quot;X-JSON&quot; , '(' . $output . ')' ); return sfView::HEADER_ONLY; $this ->setTemplate( 'myCustomTemplate' ); $this ->forward( 'otherModule' , 'index' ); $this ->redirect( 'otherModule/index' ); $this ->redirect( 'http://www.google.com/' ); }
    45. 45. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Contenido Los Templates + MVC + Templates + Layout + Variables del Template + Fragmentos de código (Partials, Components, Slots) + Configuración del Layout + Accesso al Objeto Response + Conversión de Variables de vista + Respuestas del Action
    46. 46. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Procesando las Vistas
    47. 47. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Cadena de Ejecución 36px
    48. 48. Request Controller Response Jornadas Symfony http://decharlas.uji.es/symfony Model Views
    49. 49. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Cadena de Ejecución <?php require_once (dirname(__FILE__). '/../config/ProjectConfiguration.class.php' ); $configuration = ProjectConfiguration::getApplicationConfiguration( 'frontend' , 'prod' , false ); sfContext::createInstance( $configuration )->dispatch(); web/ index.php
    50. 50. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony sfContex instance Symfony Internals sfFrontWebController::dispatch() More symfony internals Filter Chain Filters Execution Filter sfExecutionFilter::handleAction() sfExecutionFilter::executeAction() sfExecutionFilter::handleView() sfExecutionFilter::executeView() Execution Filter Way Back sfWebResponse::send() Cadena de Ejecución
    51. 51. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony class sfExecutionFilter extends sfFilter {.... protected function executeAction( $actionInstance ) { // execute the action $actionInstance ->preExecute(); $viewName = $actionInstance ->execute( $this ->context->getRequest()); $actionInstance ->postExecute(); return null === $viewName ? sfView::SUCCESS : $viewName ; } .... } sfExecutionFilter::executeAction() lib/vendor/symfony/lib/filter/sfExecutionFilter.class.php Cadena de Ejecución
    52. 52. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony sfContex instance Symfony Internals sfFrontWebController::dispatch() More symfony internals Filter Chain Filters Execution Filter sfExecutionFilter::handleAction() sfExecutionFilter::executeAction() sfExecutionFilter::handleView() sfExecutionFilter::executeView() Execution Filter Way Back sfWebResponse::send() Cadena de Ejecución
    53. 53. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony sfExecutionFilter::executeView() protected function executeView( $moduleName , $actionName , $viewName , $viewAttributes ) { // get the view instance $view = $controller ->getView( $moduleName , $actionName , $viewName ); // execute the view $view ->execute(); // Select render Mode and render ... case sfView::RENDER_CLIENT: $viewData = $view ->render(); $this ->context->getResponse()->setContent( $viewData ); break ; ... } Cadena de Ejecución
    54. 54. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony sfController::getView() abstract class sfController { public function getView( $moduleName , $actionName , $viewName ) { // user view exists? $file = sfConfig::get( 'sf_app_module_dir' ). '/' . $moduleName . '/view/' . $actionName . $viewName . 'View.class.php' ; // Pregunta si existe la clase y si existe una clase espcial del módulo y devuelve las instancia de la clase. } } lib/vendor/symfony/lib/controller/sfController.class.php Cadena de Ejecución
    55. 55. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony ¿Y esto porque es importante?
    56. 56. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Pues para extender su funcionamiento
    57. 57. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Cambiando la clase de Vista
    58. 58. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Cambiando la clase de Vista apps/frontend/moduleName/templates/indexSuccess.php apps/frontend/moduleName/view/indexSuccessView.php <?php class indexSuccessView extends sfPHPView { // Personalizamos algunos métodos } para una acción
    59. 59. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Cambiando la clase de Vista apps/frontend/config/module.yml para todas las acciones all : # For all environments enabled : true is_internal : false view_class : myPersonalView
    60. 60. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Las Clases
    61. 61. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony sfView, sfPHPView, sfPartialView Las Clases lib/vendor/symfony/lib/view/ sfView.class.php lib/vendor/symfony/lib/view/ sfPHPView.class.php lib/vendor/symfony/lib/view/ sfPartialView.class.php sfView sfPHPView sfPartialView myPHPView
    62. 62. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Inspeccionemos sfPHPView lib/vendor/symfony/lib/view/ sfPHPView.class.php
    63. 63. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony sfPHPView Class extends abstract sfView class sfPHPView extends sfView { public function execute(){} protected function renderFile( $_sfFile ){ // render ob_start(); ob_implicit_flush( 0 ); require ( $_sfFile ); return ob_get_clean(); } protected function decorate( $content ) { // Decora con el Layout } public function render() { // Procesa toda la vista para obtener su contenido return $content ; } }
    64. 64. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony sfPHPView Class extends abstract sfView class sfPHPView extends sfView { public function execute(){} protected function renderFile($_sfFile){ // render ob_start(); ob_implicit_flush(0); require($_sfFile); return ob_get_clean(); } protected function decorate($content) { // Decora con el Layout } public function render() { // Procesa toda la vista para obtener su contenido return $content; } }
    65. 65. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony sfPHPView Class extends abstract sfView class sfPHPView extends sfView { public function execute(){} protected function renderFile($_sfFile){ // render ob_start(); ob_implicit_flush(0); require($_sfFile); return ob_get_clean(); } protected function decorate($content) { // Decora con el Layout } public function render() { // Procesa toda la vista para obtener su contenido return $content; } }
    66. 66. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony sfPHPView Class extends abstract sfView class sfPHPView extends sfView { public function execute(){} protected function renderFile( $_sfFile ){ // render ob_start(); ob_implicit_flush( 0 ); require ( $_sfFile ); return ob_get_clean(); } protected function decorate($content) { // Decora con el Layout } public function render() { // Procesa toda la vista para obtener su contenido return $content; } }
    67. 67. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony sfPHPView Class extends abstract sfView class sfPHPView extends sfView { public function execute(){} protected function renderFile($_sfFile){ // render ob_start(); ob_implicit_flush(0); require($_sfFile); return ob_get_clean(); } protected function decorate( $content ) { // Decora con el Layout } public function render() { // Procesa toda la vista para obtener su contenido return $content; } }
    68. 68. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony sfPHPView Class extends abstract sfView class sfPHPView extends sfView { public function execute(){} protected function renderFile($_sfFile){ // render ob_start(); ob_implicit_flush(0); require($_sfFile); return ob_get_clean(); } protected function decorate($content) { // Decora con el Layout } public function render() { // Procesa toda la vista para obtener su contenido return $content ; } }
    69. 69. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Muchas Gracias CTO José Antonio Pio Gil
    70. 70. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony [email_address] http://twitter.com/josetonyp
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×