Zend_Controller-Router-Route-Static.xml 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- Reviewed: no -->
  3. <!-- EN-Revision: 14978 -->
  4. <sect3 id="zend.controller.router.routes.static">
  5. <title>Zend_Controller_Router_Route_Static</title>
  6. <para>
  7. これまでの例では、すべて動的なルートを使用していました。
  8. つまり、特定のパターンにマッチするものについてのルートです。
  9. しかし、時には特定のルートを固定してしまい、
  10. わざわざ正規表現エンジンを動かしたくない場合もあるでしょう。
  11. そんなときには静的なルートを使用します。
  12. </para>
  13. <programlisting role="php"><![CDATA[
  14. $route = new Zend_Controller_Router_Route_Static(
  15. 'login',
  16. array('controller' => 'auth', 'action' => 'login')
  17. );
  18. $router->addRoute('login', $route);
  19. ]]>
  20. </programlisting>
  21. <para>
  22. 上のルートは <code>http://domain.com/login</code> という URL
  23. にマッチし、<code>AuthController::loginAction()</code> にディスパッチされます。
  24. </para>
  25. <note id="zend.controller.router.routes.static.warning">
  26. <title>警告: 静的なルートにはまともなデフォルトが必須</title>
  27. <para>
  28. 静的なルートは、URL の一部をリクエストオブジェクトへのパラメータとして渡すことはありません。
  29. したがって、リクエストのディスパッチに必要なパラメータは
  30. すべてデフォルトでルートに渡すようにしておかなければなりません。
  31. "controller" や "action" のデフォルト値を省略してしまうと予期せぬ結果を引き起こし、
  32. リクエストがディスパッチ不能になってしまうでしょう。
  33. </para>
  34. <para>
  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. -->