Zend_Controller-Router-Route-Static.xml 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- Reviewed: no -->
  3. <sect3 id="zend.controller.router.routes.static">
  4. <title>Zend_Controller_Router_Route_Static</title>
  5. <para>
  6. Во всех примерах выше использовались динамические маршруты - маршруты,
  7. содержащие шаблоны для сравнения. Но часто определенный маршрут должен
  8. быть неизменным, и применение регулярных выражений по отношению к нему
  9. было бы излишеством. Решением в данной ситуации является использование
  10. статических маршрутов:
  11. </para>
  12. <programlisting language="php"><![CDATA[
  13. $route = new Zend_Controller_Router_Route_Static(
  14. 'login',
  15. array('controller' => 'auth', 'action' => 'login')
  16. );
  17. $router->addRoute('login', $route);
  18. ]]></programlisting>
  19. <para>
  20. Этот маршрут будет соответствовать URL
  21. <code>http://domain.com/login</code> и приводит к вызову
  22. <code>AuthController::loginAction()</code>.
  23. </para>
  24. <note id="zend.controller.router.routes.static.warning">
  25. <title>Предупреждение: статические маршруты должны содержать все необходимые значения по умолчанию</title>
  26. <para>
  27. Поскольку статический маршрут не передает части URL в качестве
  28. параметров объекту запроса, то вы <emphasis>должны</emphasis>
  29. передавать все параметры, необходимые для адресации запроса,
  30. в качестве значений по умолчанию. Пропуск значений "controller" или
  31. "action" приведет к неожиданным результатам,
  32. и, скорее всего, сделает невозможой адресацию запроса.
  33. </para>
  34. <para>
  35. Правило большого пальца: всегда предоставляйте следующие значения
  36. по умолчанию:
  37. </para>
  38. <itemizedlist>
  39. <listitem><para>controller</para></listitem>
  40. <listitem><para>action</para></listitem>
  41. <listitem><para>module (если нет модуля, используемого по умолчанию)</para></listitem>
  42. </itemizedlist>
  43. <para>
  44. Вы можете также передавать параметр "useDefaultControllerAlways"
  45. фронт-контроллеру в процессе загрузки:
  46. </para>
  47. <programlisting language="php"><![CDATA[
  48. $front->setParam('useDefaultControllerAlways', true);
  49. ]]></programlisting>
  50. <para>
  51. Однако это всего лишь обходной прием, всегда лучше явным
  52. образом указывать для маршрута значения по умолчанию.
  53. </para>
  54. </note>
  55. </sect3>
  56. <!--
  57. vim:se ts=4 sw=4 et:
  58. -->