Zend_Controller-Router-Route-Static.xml 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15156 -->
  3. <!-- Reviewed: no -->
  4. <sect3 id="zend.controller.router.routes.static">
  5. <title>Zend_Controller_Router_Route_Static</title>
  6. <para>
  7. Die oben angeführten Beispiele verwenden alle dynamische Routen -- Routen die einem Pattern entsprechen.
  8. Trotzdem wird manchmal eine spezielle Route in Stein gegossen, und das Starten der Regular Expression
  9. Maschine wäre ein Overkill. Die Lösung zu dieser Situation ist die Verwendung von statischen Routen:
  10. </para>
  11. <programlisting role="php"><![CDATA[
  12. $route = new Zend_Controller_Router_Route_Static(
  13. 'login',
  14. array('controller' => 'auth', 'action' => 'login')
  15. );
  16. $router->addRoute('login', $route);
  17. ]]></programlisting>
  18. <para>
  19. Die obige Route passt zu einer URL von <code>http://domain.com/login</code>, und leitet weiter zu
  20. <code>AuthController::loginAction()</code>.
  21. </para>
  22. <note id="zend.controller.router.routes.static.warning">
  23. <title>Warnung: Statische Routen müssen vernüftige Standards enthalten</title>
  24. <para>
  25. Da eine statische Route keinen Teil der URL an das Requestobjekt als Parameter übergibt,
  26. <emphasis>muss</emphasis> man alle Parameter die für das Bearbeiten eines Requests notwendig sind
  27. als Standards an die Route übergeben. Das unterdrücken der Standardwerte von "controller" oder
  28. "action" kann zu unerwarteten Ergebnissen führen, und wird dazu führen das der Request nicht
  29. bearbeitet werden kann.
  30. </para>
  31. <para>
  32. Als Daumenregel sollte man immer jeden der folgenden Standardwerte anbieten:
  33. </para>
  34. <itemizedlist>
  35. <listitem><para>controller</para></listitem>
  36. <listitem><para>action</para></listitem>
  37. <listitem><para>module (if not default)</para></listitem>
  38. </itemizedlist>
  39. <para>
  40. Optional kann auch der "useDefaultControllerAlways" Parameter an den Frontkontroller wärend des
  41. Bootstrappings übergeben werden:
  42. </para>
  43. <programlisting role="php"><![CDATA[
  44. $front->setParam('useDefaultControllerAlways', true);
  45. ]]></programlisting>
  46. <para>
  47. Trotzdem ist das als Workaround anzusehen; es ist immer besser vernünftige Standards explizit zu
  48. definieren.
  49. </para>
  50. </note>
  51. </sect3>
  52. <!--
  53. vim:se ts=4 sw=4 et:
  54. -->