Zend_Controller-Router-Route-Static.xml 3.2 KB

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