Zend_Controller-Router-Route-Hostname.xml 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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> ist die Hostname Route des
  8. Frameworks. Sie arbeitet ähnlich wie die Standardrouten, aber Sie arbeitet an und mit dem
  9. Hostnamen der aufgerufenen <acronym>URL</acronym> statt mit dem Pfad.
  10. </para>
  11. <para>
  12. Verwenden wir also ein Beispiel von der Standardroute und schauen wir uns an wie Sie auf
  13. einem Hostnamen basierenden Weg aussehen würde. Statt das der Benutzer über einen Pfad
  14. aufgerufen wird, wollen wir das der Benutzer
  15. <filename>http://martel.users.example.com</filename> aufrufen kann, um die Informationen
  16. über den Benutzer "martel" zu sehen:
  17. </para>
  18. <programlisting language="php"><![CDATA[
  19. $hostnameRoute = new Zend_Controller_Router_Route_Hostname(
  20. ':username.users.example.com',
  21. array(
  22. 'controller' => 'profile',
  23. 'action' => 'userinfo'
  24. )
  25. );
  26. $plainPathRoute = new Zend_Controller_Router_Route_Static('');
  27. $router->addRoute('user', $hostnameRoute->chain($plainPathRoute);
  28. ]]></programlisting>
  29. <para>
  30. Der erste Parameter in Konstruktor von
  31. <classname>Zend_Controller_Router_Route_Hostname</classname> ist eine Routerdefinition die
  32. zu einem Hostnamen passt. Routerdefinitionen bestehen aus statischen und dynamischen Teilen
  33. die durch ein Punkt ('.') Zeichen getrennt sind. Dynamische Teile, genannt Variablen, werden
  34. durch einen, dem Variablennamen vorangestellten Doppelpunkt, gekennzeichnet:
  35. <command>:username</command>. Statische Teile sind nur einfacher Text:
  36. <command>user</command>.
  37. </para>
  38. <para>
  39. Hostnamerouten können verwendet werden wie sie sind, sollten es aber nie. Der Grund dahinter
  40. ist, das Hostnamerouten alleine jedem Pfad entsprechen würden. Was man also tun muß, ist
  41. eine Pfadroute an die Hostnameroute zu ketten. Das wird, wie im Beispiel, getan indem
  42. <command>$hostnameRoute->chain($pathRoute);</command> aufgerufen wird. Indem das getan
  43. wird, wird <varname>$hostnameRoute</varname> nicht geändert, aber eine neue Route
  44. (<classname>Zend_Controller_Router_Route_Chain</classname>), welche dann dem Router
  45. übergeben werden kann, wird zurückgegeben.
  46. </para>
  47. </sect3>
  48. <!--
  49. vim:se ts=4 sw=4 et:
  50. -->