Zend_Controller-Router-Route-Hostname.xml 2.4 KB

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