{"id":22,"date":"2009-06-18T18:08:41","date_gmt":"2009-06-18T22:08:41","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/andresvargas\/?p=22"},"modified":"2009-06-18T18:08:41","modified_gmt":"2009-06-18T22:08:41","slug":"problemas-frecuentes-en-symfony","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/andresvargas\/2009\/06\/18\/problemas-frecuentes-en-symfony\/","title":{"rendered":"Problemas frecuentes en symfony"},"content":{"rendered":"<p><strong><span style=\"color: #000080\">\u00bfComo hago para direccionar desde un modulo en una aplicacion a un modulo de otra aplicacion en symfony 1.2?<\/span><\/strong><\/p>\n<p style=\"padding-left: 30px\"><span style=\"color: #000000\">Dado que en versiones anteriores no lo he probado, no puedo asegurar que este m\u00e9todo funcione en versiones anteriores a 1.2, bueno, ahora si empecemos:<\/span><\/p>\n<ol>\n<li><span style=\"color: #000000\">Copiar este codigo dentro de la clase <strong>TuAppOrigen<\/strong>Configuration.class.php<\/span><\/li>\n<\/ol>\n<p style=\"padding-left: 30px\">\n<p style=\"padding-left: 30px\"><em>protected $enrutamientoFrontend = null;<\/em><\/p>\n<p><em>public function generaUrlFrontend($nombre, $parametros = array())<br \/>\n{<br \/>\nsfConfig::add(array('sf_webroot_dir' =&gt; '\/nombreProyecto\/web'));<\/em><\/p>\n<p><em>$ruta = 'http:\/\/'.$_SERVER['HTTP_HOST'].sfConfig::get('sf_webroot_dir').'\/'.sfConfig::get('app_controller_backend');<br \/>\nreturn $ruta.$this-&gt; getEnrutamientoFrontend()-&gt;generate($nombre, $parametros);<br \/>\n}<\/em><\/p>\n<p><em>public function getEnrutamientoFrontend()<br \/>\n{<br \/>\nif (!$this-&gt;enrutamientoFrontend)<br \/>\n{<br \/>\n$this-&gt;enrutamientoFrontend= new sfPatternRouting(new sfEventDispatcher());<\/em><\/p>\n<p><em>$configuracion = new sfRoutingConfigHandler();<br \/>\n$rutas = $configuracion-&gt;evaluate(array(sfConfig::get('sf_apps_dir').'\/nombreAppOrigen\/config\/routing.yml'));<br \/>\n$this-&gt;enrutamientoFrontend-&gt;setRoutes($rutas);<br \/>\n}<\/em><\/p>\n<p><em>return $this-&gt;enrutamientoFrontend;<br \/>\n}<\/em><\/p>\n<p><em>Ademas en el action de la aplicacion origen ponemos lo sgte:<\/em><\/p>\n<p><em>$this-&gt;redirect($this-&gt;getContext()-&gt;getConfiguration()-&gt;generaUrlFrontend('ingreso_admin'));<br \/>\n<\/em><\/p>\n<p>Ahora explicaremos las lineas mas importantes que son las que deben cambiar deacuerdo a sus proyectos<\/p>\n<ul>\n<li>generaUrlFrontend($nombre, $parametros = array())<\/li>\n<\/ul>\n<p style=\"padding-left: 30px\">Esta funcion recibe dos parametros, el primero es el nombre de la opcion de configuracion del archivo routing.yml de la aplicacion origen, y el segundo parametro es un arreglo de parametros en caso de que deseemos enviarle al modulo de la otra aplicacion.<\/p>\n<ul>\n<li>sfConfig::add(array('sf_webroot_dir' =&gt; '\/nombreProyecto\/web'));<\/li>\n<\/ul>\n<p style=\"padding-left: 30px\">En esta linea se define la ruta del proyecto hecho en symfony y se la almacena en sf_webroot_dir. Esta ruta (\"\/nombreProyecto\/web\") se debe cambiar y poner la ruta hacia la carpeta web del proyecto propio, tomando en cuenta que esta se la debe poner desde la carpeta del servidor web, otro ejemplo seria poner \"PHP5\/proyecto\/web\", que es para las personas que tienen instalado php, apache y el MDBD por separado.<\/p>\n<ul>\n<li>$ruta = 'http:\/\/'.$_SERVER['HTTP_HOST'].sfConfig::get('sf_webroot_dir');<\/li>\n<\/ul>\n<p style=\"padding-left: 30px\">En esta linea se define toda la ruta absoluta hacia la carpeta web de la otra aplicacion, podriamos ponerlo estatico, es dcir poner algo como \"http:\/\/localhost\/nombreProyecto\/web\/\", pero dado que esta ruta por lo general la queremos de forma dinamica, lo hacemos de esta forma, ademas que mediante esto podemos facilmente pasar el proyecto a otra maq con otra estructura y no tendriamos problemas de directorios, ya que consultamos el servidor web que estemos utilizando y le agregamos la ruta de la carpeta web del proyecto que la guardamos en en el punto anterior.<\/p>\n<ul>\n<li>sfConfig::get('app_controller_backend')<\/li>\n<\/ul>\n<p style=\"padding-left: 30px\">Con esto obtenemos el nombre de la aplicacion a la cual queremos redireccionar, este nombre se lo debe configurar en el archivo app.yml de la aplicacion origen.<\/p>\n<p style=\"padding-left: 30px\">Este era el contenido de mi archivo app.yml, esto variara segun los nombres de las aplicaciones de ustedes:<\/p>\n<p style=\"padding-left: 30px\">prod:<br \/>\ncontroller:<br \/>\nfrontend: frontend.php<br \/>\nbackend:\u00a0 index.php<br \/>\ndev:<br \/>\ncontroller:<br \/>\nfrontend: frontend_dev.php<br \/>\nbackend:\u00a0 admin_dev.php<\/p>\n<ul>\n<li><em>$configuracion-&gt;evaluate(array(sfConfig::get('sf_apps_dir').'\/nombreAppOrigen\/config\/routing.yml'))<\/em><\/li>\n<li><em>$this-&gt;redirect($this-&gt;getContext()-&gt;getConfiguration()-&gt;generaUrlFrontend('ingreso_admin'));<br \/>\n<\/em><\/li>\n<\/ul>\n<p style=\"padding-left: 30px\"><em>Bien, ya tenemos \"http:\/\/servidor\/nombreProyecto\/web\", pero falta el nombre de la accion a la cual nos queremos dirigir. Estas lineas son para eso, para consultar el nombre de la accion a la cual nos queremos dirigir. La segunda linea nos indica el nombre de la opcion de configuracion del archivo routing.yml en donde obtenemos el nombre de la accion a ejecutar, mientras que en la primera linea le decimos en que directorio se encuentra este archivo routing.yml.<\/em><\/p>\n<p style=\"padding-left: 30px\"><em>En mi caso tenia configurado el routing.yml de esta forma:<\/em><\/p>\n<p style=\"padding-left: 30px\"><em>homepage:<br \/>\nurl:\u00a0\u00a0 \/<br \/>\nparam: { module: default, action: index }<\/p>\n<p>default_index:<br \/>\nurl:\u00a0\u00a0 \/:module<br \/>\nparam: { action: index }<\/p>\n<p>ingreso_admin:<br \/>\nurl:\u00a0\u00a0 \/:<br \/>\nparam: { module: default }<\/p>\n<p>default:<br \/>\nurl:\u00a0\u00a0 \/:module\/:action\/*<br \/>\n<\/em><\/p>\n<p>Con estos pocos pasos ya deberian poder moverse entre aplicaciones....<\/p>\n<p style=\"padding-left: 30px\">\n","protected":false},"excerpt":{"rendered":"<p>\u00bfComo hago para direccionar desde un modulo en una aplicacion a un modulo de otra aplicacion en symfony 1.2? Dado que en versiones anteriores no lo he probado, no puedo asegurar que este m\u00e9todo funcione en versiones anteriores a 1.2, bueno, ahora si empecemos: Copiar este codigo dentro de la clase TuAppOrigenConfiguration.class.php protected $enrutamientoFrontend = [&hellip;]<\/p>\n","protected":false},"author":20,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-22","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/andresvargas\/wp-json\/wp\/v2\/posts\/22","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/andresvargas\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/andresvargas\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/andresvargas\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/andresvargas\/wp-json\/wp\/v2\/comments?post=22"}],"version-history":[{"count":2,"href":"https:\/\/blog.espol.edu.ec\/andresvargas\/wp-json\/wp\/v2\/posts\/22\/revisions"}],"predecessor-version":[{"id":24,"href":"https:\/\/blog.espol.edu.ec\/andresvargas\/wp-json\/wp\/v2\/posts\/22\/revisions\/24"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/andresvargas\/wp-json\/wp\/v2\/media?parent=22"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/andresvargas\/wp-json\/wp\/v2\/categories?post=22"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/andresvargas\/wp-json\/wp\/v2\/tags?post=22"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}