Zend_Controller-Router-Route-Hostname.xml 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- EN-Revision: 15103 -->
  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> est la route par nom
  8. d'hôte du framework. Elle fonctionne de la même manière que la route standard, mais elle
  9. utilise le nom d'hôte de l'URL appelé au lieu du chemin.
  10. </para>
  11. <para>
  12. Utilisons l'exemple d'une route standard et regardons ce que cela donnerais en
  13. utilisant le nom d'hôte. Au lieu d'appeler l'utilisateur par le chemin, nous voulons être
  14. capable d'appeler <code>http://toto.users.example.com</code> pour voir les informations
  15. concernant l'utilisateur "toto"&#160;
  16. </para>
  17. <programlisting role="php"><![CDATA[
  18. $hostnameRoute = new Zend_Controller_Router_Route_Hostname(
  19. ':username.users.example.com',
  20. array(
  21. 'controller' => 'profile',
  22. 'action' => 'userinfo'
  23. )
  24. );
  25. $plainPathRoute = new Zend_Controller_Router_Route_Static('');
  26. $router->addRoute('user', $hostnameRoute->chain($plainPathRoute);
  27. ]]></programlisting>
  28. <para>
  29. Le premier paramètre dans le constructeur
  30. <classname>Zend_Controller_Router_Route_Hostname</classname> est la définition d'une route
  31. qui correspondra à un nom d'hôte. Les définitions de route consistent en des parties
  32. statiques et des parties dynamiques séparées par le caractère point ("<code>.</code>"). Les
  33. parties dynamiques, appelées variables, sont marquées en précédant le nom de variable par
  34. le caractère deux-points ("<code>:</code>")&#160;: <code>:username</code>. Les parties
  35. statiques sont de simples textes&#160;: <code>user</code>.
  36. </para>
  37. <para>
  38. Les routes par nom d'hôtes peuvent, mais ne devraient pas être utilisées comme ceci.
  39. La raison à cela est que qu'une route par nom d'hôte seule ne correspondra à aucun chemin.
  40. Donc vous devez donc chaîner le chemin d'une route à une route par nom d'hôte. Ceci est
  41. réalisé comme dans l'exemple ci-dessous en appelant
  42. <code>$hostnameRoute-&gt;chain($pathRoute);</code>. En faisant ceci,
  43. <code>$hostnameRoute</code> n'est pas modifié, mais une nouvelle route
  44. (<classname>Zend_Controller_Router_Route_Chain</classname>) est retournée, qui peut ainsi
  45. être fournie au routeur.
  46. </para>
  47. <note>
  48. <title>Priorité des paramètres</title>
  49. <para>
  50. Lors du chaînage de routes ensemble, comme la route par nom d'hôte avec la route
  51. par chemin ("path"), les paramètres de la route par nom d'hôte ont une priorité plus
  52. haute que les paramètres de la route par chemin. Ainsi si vous définissez un contrôleur
  53. dans les deux routes, le contrôleur de la route par nom d'hôte sera sélectionné.
  54. </para>
  55. </note>
  56. <sect4 id="zend.controller.router.routes.hostname.config">
  57. <title>Routes par nom d'hôtes avec Zend_Config</title>
  58. <para>
  59. Pour chaîner ensemble les routes par nom d'hôte et les routes par chemin, il
  60. existe un paramètre additionnel pour la configuration nommé <code>chains</code>.
  61. Celui-ci est simplement une liste de routes, qui peuvent être chaînées avec la route
  62. parente. Ni la route parente, ni la route enfant ne seront ajoutées directement au
  63. routeur mais seulement la route chaînée. Le nom de la route chaînée dans le routeur
  64. sera la concaténation du nom de la route parente, d'un tiret ("<code>-</code>") et du
  65. nom de la route enfant. Un fichier simple de configuration de type XML ressemblera à
  66. ceci&#160;:
  67. </para>
  68. <programlisting role="xml"><![CDATA[
  69. <routes>
  70. <www type="Zend_Controller_Router_Route_Hostname">
  71. <route>www.example.com</route>
  72. <chains>
  73. <index type="Zend_Controller_Rotuer_Route_Static">
  74. <route></route>
  75. <defaults module="default" controller="index" action="index" />
  76. </index>
  77. <imprint type="Zend_Controller_Rotuer_Route_Static">
  78. <route>imprint</route>
  79. <defaults module="default" controller="index" action="index" />
  80. </imprint>
  81. </chains>
  82. </www>
  83. <users type="Zend_Controller_Router_Route_Hostname">
  84. <route>users.example.com</route>
  85. <chains>
  86. <profile type="Zend_Controller_Rotuer_Route">
  87. <route>:username</route>
  88. <defaults module="users" controller="profile" action="index" />
  89. </profile>
  90. </chains>
  91. </users>
  92. <misc type="Zend_Controller_Router_Route_Static">
  93. <route>misc</route>
  94. </misc>
  95. </routes>
  96. ]]></programlisting>
  97. <para>
  98. Ceci donnera trois routes <code>www-index</code>, <code>www-imprint</code> et
  99. <code>users-profile</code> qui fonctionneront seulement avec le bon nom d'hôte et la
  100. route <code>misc</code>, qui fonctionnera avec n'importe quel nom d'hôte.
  101. </para>
  102. </sect4>
  103. </sect3>