desarrollo rápido con php y symfony (v): las rutas
DESCRIPTION
Explicación del sistema de rutas de Symfony para la generación de URLs amigablesTRANSCRIPT
Symfony
David J.Brenes
Martínez
URLsamigables
Configuraciónde rutasParámetros
Helpers
URLs y elModelo
Referencias,Créditos yLicencia
Desarrollo rápido con PHP y Symfony(V) Las rutas
David J. Brenes Martínez
Curso de Extensión UniversitariaDesarrollo web avanzado
Universidad de Oviedo
2010/03/22
Symfony
David J.Brenes
Martínez
URLsamigables
Configuraciónde rutasParámetros
Helpers
URLs y elModelo
Referencias,Créditos yLicencia
La importancia de la URL
Las URLs pueden aportar información al usuario sobrela páginaEn algunos casos es la primera fuente de informaciónque se recibe
Symfony
David J.Brenes
Martínez
URLsamigables
Configuraciónde rutasParámetros
Helpers
URLs y elModelo
Referencias,Créditos yLicencia
La importancia de la URL
Symfony
David J.Brenes
Martínez
URLsamigables
Configuraciónde rutasParámetros
Helpers
URLs y elModelo
Referencias,Créditos yLicencia
Las rutas en Symfony
El controlador decide a que acción corresponde la rutaPara ello comprueba las rutas configuradas e intentaencajar la ruta actual
Symfony
David J.Brenes
Martínez
URLsamigables
Configuraciónde rutasParámetros
Helpers
URLs y elModelo
Referencias,Créditos yLicencia
routes.yml
Listado de rutas que componen nuestra aplicaciónAlgunas rutas pueden tener un significado especialContamos con rutas por defecto
Symfony
David J.Brenes
Martínez
URLsamigables
Configuraciónde rutasParámetros
Helpers
URLs y elModelo
Referencias,Créditos yLicencia
routes.yml
nombre_ruta :u r l : / u r l _1 / : param_url_1 / u r l_2 / : param_url_2param : { param_no_url : va l o r }
Symfony
David J.Brenes
Martínez
URLsamigables
Configuraciónde rutasParámetros
Helpers
URLs y elModelo
Referencias,Créditos yLicencia
routes.yml
Las rutas reciben un nombre para poder referirse aellasCada ruta puede tener parmámetros dinámicos dentrode la URL o estáticos en los paramsEl módulo y la acción son dos parámetros
Symfony
David J.Brenes
Martínez
URLsamigables
Configuraciónde rutasParámetros
Helpers
URLs y elModelo
Referencias,Créditos yLicencia
Parámetros en la URL
Son fragmentos de la URL que se mapean comoparámetrosLas acciones acceden a estos parámetros a través de$request->getParameter()Estos parámetros son dinámicos así que se les puedenponer condiciones (ser números enteros, por ejemplo)en forma de expresiones regulares.
Symfony
David J.Brenes
Martínez
URLsamigables
Configuraciónde rutasParámetros
Helpers
URLs y elModelo
Referencias,Créditos yLicencia
Parámetros estáticos
Son parámetros cuyo valor se pone de manera estáticapara la rutaLas acciones acceden a estos parámetros a través de$request->getParameter()Pueden usarse para poner valor por defecto a unparámetro de URL
Symfony
David J.Brenes
Martínez
URLsamigables
Configuraciónde rutasParámetros
Helpers
URLs y elModelo
Referencias,Créditos yLicencia
routes.yml
conductores_de_coche :u r l : / car / : ma t r i cu la / d r i v e r s / : pageparam : { module : d r i ve rs , ac t i on : l i s t ,
page : 1}requirements : { page : \ d+ }
Symfony
David J.Brenes
Martínez
URLsamigables
Configuraciónde rutasParámetros
Helpers
URLs y elModelo
Referencias,Créditos yLicencia
URLHelper
El helper del Sistema de Rutas es URLHeperPermite construir enlaces y URLs para la aplicación demanera independiente a la configuraciónPodemos cambiar las URLs externas de una aplicaciónen producción sin que los enlaces dejen de funcionar
Symfony
David J.Brenes
Martínez
URLsamigables
Configuraciónde rutasParámetros
Helpers
URLs y elModelo
Referencias,Créditos yLicencia
Funciones
url_to: Te devuelve una URL externa para la URLinterna que le paseslink_to: Construye un enlace con la URL quedevolvería url_toUn enlace interno esmodulo/acción?param1=valor1¶m2=valor2Para acelerar las funciones se puede usar también@nombre_ruta?param1=valor1¶m2=valor2
Symfony
David J.Brenes
Martínez
URLsamigables
Configuraciónde rutasParámetros
Helpers
URLs y elModelo
Referencias,Créditos yLicencia
Usando el Helper
u r l _ t o ( " d r i v e r s / l i s t ? ma t r i cu la =0000AAA&page=5 " )
/ / −−> / car /0000AAA/ d r i v e r s /5
l i nk \ _to ( " Conductores " ," @conductores_de_coche? mat r i cu la =0000AAA
&page=5 " )/ / −−> <a h re f = " / car /0000AAA/ d r i v e r s /5" >/ / Conductores/ / </a>
Symfony
David J.Brenes
Martínez
URLsamigables
Configuraciónde rutasParámetros
Helpers
URLs y elModelo
Referencias,Créditos yLicencia
URLs para un modelo
Un parámetro para la ruta es la clase que la manejaPor defecto es el router de SymfonyDoctrine tiene su propio routerAporta ventajas para acceder a ciertos recursos
Symfony
David J.Brenes
Martínez
URLsamigables
Configuraciónde rutasParámetros
Helpers
URLs y elModelo
Referencias,Créditos yLicencia
Una ruta de modelo
coche :u r l : / car / : ma t r i cu lac lass : s fDoct r ineRouteopt ions : { model : Car , type : ob jec t }param : { module : cars , ac t i on : show }requirements : { sf_method : [ get ] }
Symfony
David J.Brenes
Martínez
URLsamigables
Configuraciónde rutasParámetros
Helpers
URLs y elModelo
Referencias,Créditos yLicencia
Ayuda en la acción
La ruta actual te permite obtener el objetoSi el objeto no existe lanza un error 404
Symfony
David J.Brenes
Martínez
URLsamigables
Configuraciónde rutasParámetros
Helpers
URLs y elModelo
Referencias,Créditos yLicencia
Ayuda en la acción
$coche = $ th is −>getRoute ()−> getObject ( ) ;
Symfony
David J.Brenes
Martínez
URLsamigables
Configuraciónde rutasParámetros
Helpers
URLs y elModelo
Referencias,Créditos yLicencia
Ayuda en la vista
El helper de enlaces acepta el objeto para el quequeremos generar el enlacePodemos pasar parametros adicionalesDebemos crear métodos en la clase para que el routerlos obtenga del objeto
Symfony
David J.Brenes
Martínez
URLsamigables
Configuraciónde rutasParámetros
Helpers
URLs y elModelo
Referencias,Créditos yLicencia
Ayuda en la vista
u r l _ f o r ( array ( ’ s f_ rou te ’ => ’ coche ’ ,’ s f _sub jec t ’ => $coche ) )
Symfony
David J.Brenes
Martínez
URLsamigables
Configuraciónde rutasParámetros
Helpers
URLs y elModelo
Referencias,Créditos yLicencia
URLs de colecciones
Permiten definir multiples URLs para gestionarcoleccionesDefine URLs para crear, eliminar, actualizar, mostrar,listar y los formularios
Symfony
David J.Brenes
Martínez
URLsamigables
Configuraciónde rutasParámetros
Helpers
URLs y elModelo
Referencias,Créditos yLicencia
URLs de colecciones
car :c lass : s fDoc t r i neRou teCo l l ec t i onopt ions : { model : Car }
Symfony
David J.Brenes
Martínez
URLsamigables
Configuraciónde rutasParámetros
Helpers
URLs y elModelo
Referencias,Créditos yLicencia
Referencias
Symfony Project: www.symfony-project.orgThe Symfony Reference Book: http://www.symfony-project.org/reference/1_4/en/
Practical Symfony:http://www.symfony-project.org/jobeet/1_4/Doctrine/en/
The Definitive Guide to Symfony:http://www.symfony-project.org/book/1_2/
Symfony
David J.Brenes
Martínez
URLsamigables
Configuraciónde rutasParámetros
Helpers
URLs y elModelo
Referencias,Créditos yLicencia
Licencia
Estas transparencias se publican bajo licencia CreativeCommons y se pueden redistribuir o modificar bajo lassiguientes condiciones:
Se dé reconocimiento al autor de estas transparencias.No se use con propósitos comerciales.Se distribuya con la misma licencia.
Texto de la licencia: http://creativecommons.org/licenses/by-nc-sa/3.0/