Zend_Controller-Router-Route-Hostname.xml 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 17592 -->
  3. <!-- Reviewed: no -->
  4. <sect3 id="zend.controller.router.routes.hostname">
  5. <title>Zend_Controller_Router_Route_Hostname</title>
  6. <para>
  7. <classname>Zend_Controller_Router_Route_Hostname</classname> es la ruta
  8. del framework en el servidor. Funciona similarmente a la standard route,
  9. pero funciona con el nombre del host de la <acronym>URL</acronym>
  10. llamada, en lugar del path. </para>
  11. <para> Vamos a usar el ejemplo de la standard route y ver cómo se vería con
  12. un nombre basado en host. En lugar de llamar al usuario mediante un
  13. path, quisiéramos que un usuario pueda llamar a
  14. <filename>http://martel.users.example.com</filename> para ver la
  15. información acerca del usuario "martel". </para>
  16. <programlisting language="php"><![CDATA[
  17. $hostnameRoute = new Zend_Controller_Router_Route_Hostname(
  18. ':username.users.example.com',
  19. array(
  20. 'controller' => 'profile',
  21. 'action' => 'userinfo'
  22. )
  23. );
  24. $plainPathRoute = new Zend_Controller_Router_Route_Static('');
  25. $router->addRoute('user', $hostnameRoute->chain($plainPathRoute);
  26. ]]></programlisting>
  27. <para> El primer parámetro del constructor en
  28. <classname>Zend_Controller_Router_Route_Hostname</classname> es una
  29. definición de ruta que será comparada con el nombre del host. Las
  30. definiciones de ruta consisten en partes estáticas y dinámicas separadas
  31. por el carácter punto ('.'). Las partes dinámicas, llamadas variables,
  32. se marcan anteponiendo dos puntos (':') al nombre de la variable:
  33. <command>:username</command>. Las partes estáticas son
  34. simplemente texto: <command>user</command>. </para>
  35. <para> Las rutas del nombre del host pueden, pero nunca deben ser utilizadas
  36. así. La razón detrás de esto es que la ruta del nombre del host
  37. solamente, concordaría con cualquier path. Entonces, lo que tiene que
  38. hacer es encadenar una ruta del path a la ruta del nombre del host. Esto
  39. se hace como en el ejemplo llamando a
  40. <command>$hostnameRoute->chain($pathRoute);</command>.
  41. Haciendo esto, <varname>$hostnameRoute</varname> no se modifica,
  42. pero devuelve una nueva ruta
  43. (<classname>Zend_Controller_Router_Route_Chain</classname>), que
  44. luego puede ser entregada al router. </para>
  45. </sect3>