[GENERIC] Zend_Translate:
[zend.git] / documentation / manual / ja / module_specs / Zend_Controller-QuickStart.xml
blobc508538b19fd9c9b3970c2b009f8d14a0dc1d4f7
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- Reviewed: no -->
3 <!-- EN-Revision: 20765 -->
4 <sect1 id="zend.controller.quickstart">
5     <title>Zend_Controller クイックスタート</title>
7     <sect2 id="zend.controller.quickstart.introduction">
8         <title>導入</title>
10         <para>
11             <classname>Zend_Controller</classname> は、Zend Framework の <acronym>MVC</acronym>
12             システムの中心となるものです。<acronym>MVC</acronym> は <ulink
13                 url="http://en.wikipedia.org/wiki/Model-view-controller">モデル-ビュー-コントローラ</ulink>
14             の頭文字をとったもので、アプリケーションのロジックと表示ロジックを分離させる設計手法です。
15             <classname>Zend_Controller_Front</classname> は
16             <ulink
17                 url="http://www.martinfowler.com/eaaCatalog/frontController.html">
18                 フロントコントローラ</ulink> パターンを実装しており、
19             すべてのリクエストをいったんフロントコントローラで受け取った上でその
20             <acronym>URL</acronym> にもとづいたアクションコントローラに配送します。
21         </para>
23         <para>
24             <classname>Zend_Controller</classname> は、拡張性を考慮して作成されています。
25             拡張の方法としては、既存のクラスのサブクラスを作成する方法と
26             アクションヘルパーを作成する方法があります。
27             新しいサブクラスを作成すると、コントローラクラスの基盤となる
28             インターフェイスや機能を新たに書くことができます。
29             アクションヘルパーを使用すると、システムの機能を強化したり変更したりできるようになります。
30         </para>
31     </sect2>
33     <sect2 id="zend.controller.quickstart.go">
34         <title>クイックスタート</title>
36         <para>
37             より詳しい情報が知りたい場合は、次のセクションを参照ください。
38             とりあえず動かしてみたいという方は、ここを読むといいでしょう。
39         </para>
41         <sect3 id="zend.controller.quickstart.go.directory">
42             <title>ファイルシステムレイアウトの作成</title>
44             <para>
45                 まずはディレクトリ構成を決めましょう。
46                 典型的なレイアウトは、次のようなものです。
47             </para>
49             <programlisting language="php"><![CDATA[
50 application/
51     controllers/
52         IndexController.php
53     models/
54     views/
55         scripts/
56             index/
57                 index.phtml
58         helpers/
59         filters/
60 html/
61     .htaccess
62     index.php
63 ]]></programlisting>
65         </sect3>
67         <sect3 id="zend.controller.quickstart.go.docroot">
68             <title>ドキュメントルートの設定</title>
70             <para>
71                 ウェブサーバのドキュメントルートを、先ほどのレイアウト中の
72                 <filename>html/</filename> ディレクトリに設定します。
73             </para>
74         </sect3>
76         <sect3 id="zend.controller.quickstart.go.rewrite">
77             <title>rewrite ルールの作成</title>
79             <para>
80                 上のレイアウトの <filename>html/.htaccess</filename>
81                 ファイルを、次のように編集します。
82             </para>
84             <programlisting language="php"><![CDATA[
85 RewriteEngine On
86 RewriteCond %{REQUEST_FILENAME} -s [OR]
87 RewriteCond %{REQUEST_FILENAME} -l [OR]
88 RewriteCond %{REQUEST_FILENAME} -d
89 RewriteRule ^.*$ - [NC,L]
90 RewriteRule ^.*$ index.php [NC,L]
91 ]]></programlisting>
93             <note>
94                 <title>mod_rewrite について</title>
96                 <para>
97                     上のリライトルールは、バーチャルホストのドキュメントルート配下にある
98                     すべてのファイルへのアクセスを許可するものです。
99                     この方式で公開してしまってはまずいファイルがある場合は、
100                     このルールにさらに制約を追加しなければなりません。
101                     Apache のウェブサイトにいけば、
102                     <ulink
103                         url="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html">
104                         mod_rewrite について</ulink>
105                     もっと詳しく知ることができます。
106                 </para>
107             </note>
109             <para>
110                 <acronym>IIS</acronym> 7.0 をお使いの場合は、次のような rewrite 設定を使用します。
111             </para>
113             <programlisting language="xml"><![CDATA[
114 <?xml version="1.0" encoding="UTF-8"?>
115 <configuration>
116      <system.webServer>
117          <rewrite>
118              <rules>
119                  <rule name="Imported Rule 1" stopProcessing="true">
120                      <match url="^.*$" />
121                      <conditions logicalGrouping="MatchAny">
122                          <add input="{REQUEST_FILENAME}"
123                              matchType="IsFile" pattern=""
124                              ignoreCase="false" />
125                          <add input="{REQUEST_FILENAME}"
126                              matchType="IsDirectory"
127                              pattern="" ignoreCase="false" />
128                      </conditions>
129                      <action type="None" />
130                  </rule>
131                  <rule name="Imported Rule 2" stopProcessing="true">
132                      <match url="^.*$" />
133                      <action type="Rewrite" url="index.php" />
134                  </rule>
135              </rules>
136          </rewrite>
137      </system.webServer>
138 </configuration>
139 ]]></programlisting>
141             <para>
142                 このルールは、既存のリソース
143                 (シンボリックリンク、空でないファイル、あるいは空でないディレクトリ)
144                 へのリクエストを適切に転送し、
145                 それ以外のすべてのリクエストをフロントコントローラに転送します。
146             </para>
148             <note>
149                 <para>
150                     上の rewrire ルールは Apache 用のものです。
151                     その他のウェブサーバ用の例については
152                     <link linkend="zend.controller.router.introduction">
153                     ルータのドキュメント</link> を参照ください。
154                 </para>
155             </note>
156         </sect3>
158         <sect3 id="zend.controller.quickstart.go.bootstrap">
159             <title>起動ファイルの作成</title>
161             <para>
162                 起動ファイルとはすべてのリクエストの転送先となるファイルのことで、
163                 今回の例では <filename>html/index.php</filename> がそれにあたります。
164                 <filename>html/index.php</filename> をお好みのエディタで開き、次の内容を追加します。
165             </para>
167             <programlisting language="php"><![CDATA[
168 Zend_Controller_Front::run('/path/to/app/controllers');
169 ]]></programlisting>
171             <para>
172                 これは、フロントコントローラのインスタンスとディスパッチを行います。
173                 この結果、アクションコントローラへリクエストが転送されます。
174             </para>
175         </sect3>
177         <sect3 id="zend.controller.quickstart.go.controller">
178             <title>デフォルトのアクションコントローラの作成</title>
180             <para>
181                 アクションコントローラについて説明する前に、まず
182                 Zend Framework でのリクエストの処理方法について知っておきましょう。
183                 デフォルトでは、<acronym>URL</acronym> パスの最初の部分がコントローラ、
184                 そしてその次の部分がアクションに対応します。たとえば <acronym>URL</acronym> が
185                 <filename>http://framework.zend.com/roadmap/components</filename>
186                 である場合、パスは <filename>/roadmap/components</filename>
187                 となり、これは <emphasis>roadmap</emphasis> コントローラの
188                 <emphasis>components</emphasis> アクションに対応します。
189                 アクションを省略した場合は <emphasis>index</emphasis> アクションであるとみなされます。
190                 またコントローラを省略した場合は <emphasis>index</emphasis> コントローラであるとみなされます
191                 (Apache が自動的に <emphasis>DirectoryIndex</emphasis>
192                 に対応させるという規約に従っています)。
193             </para>
195             <para>
196                 <classname>Zend_Controller</classname> のディスパッチャは、
197                 コントローラを対応するクラスに関連付けます。
198                 デフォルトでは、コントローラ名の先頭を大文字にしたものに
199                 <emphasis>Controller</emphasis> をつなげたものがクラス名となります。
200                 つまり、上の例では <emphasis>roadmap</emphasis> コントローラが
201                 <emphasis>RoadmapController</emphasis> クラスに対応することになります。
202             </para>
204             <para>
205                 同様に、アクションもコントローラクラスのメソッドに関連付けます。
206                 デフォルトでは、アクション名を小文字に変換して
207                 <emphasis>Action</emphasis> を追加したものがメソッド名となります。
208                 つまり、上の例では <emphasis>components</emphasis> アクションは
209                 <methodname>componentsAction()</methodname> メソッドになり、最終的に
210                 <methodname>RoadmapController::componentsAction()</methodname>
211                 がコールされることになります。
212             </para>
214             <para>
215                 続いて、デフォルトのアクションコントローラと
216                 アクションメソッドを作ってみましょう。
217                 先ほど説明したように、デフォルトのコントローラ名およびアクション名はどちらも
218                 <emphasis>index</emphasis> となります。
219                 <filename>application/controllers/IndexController.php</filename>
220                 を開き、次の内容を入力しましょう。
221             </para>
223             <programlisting language="php"><![CDATA[
224 /** Zend_Controller_Action */
225 class IndexController extends Zend_Controller_Action
227     public function indexAction()
228     {
229     }
231 ]]></programlisting>
233             <para>
234                 デフォルトでは
235                 <link linkend="zend.controller.actionhelpers.viewrenderer">ViewRenderer</link>
236                 アクションヘルパーが有効になります。つまり、
237                 アクションメソッドとそれに対応するビュースクリプトを用意すれば、
238                 すぐにその内容をレンダリングできるというわけです。
239                 デフォルトでは、<acronym>MVC</acronym> のビュー層として <classname>Zend_View</classname> を使用します。
240                 <emphasis>ViewRenderer</emphasis> は、コントローラ名
241                 (たとえば <emphasis>index</emphasis>) とアクション名
242                 (たとえば <emphasis>index</emphasis>) から処理するテンプレートを決定します。
243                 デフォルトでは、テンプレートの拡張子は
244                 <filename>.phtml</filename> となります。つまり、上の例では
245                 <filename>index/index.phtml</filename> をレンダリングします。
246                 さらに <emphasis>ViewRenderer</emphasis> は、
247                 コントローラと同一階層にある <filename>views/</filename>
248                 ディレクトリを自動的にビューの基底ディレクトリとみなし、
249                 <filename>views/scripts/</filename> ビュースクリプトがおかれるものと考えます。
250                 したがって、実際にレンダリングされるテンプレートは
251                 <filename>application/views/scripts/index/index.phtml</filename>
252                 となります。
253             </para>
254         </sect3>
256         <sect3 id="zend.controller.quickstart.go.view">
257             <title>ビュースクリプトの作成</title>
259             <para>
260                 <link linkend="zend.controller.quickstart.go.controller">
261                 先ほど説明したように</link>、ビュースクリプトの場所は
262                 <filename>application/views/scripts/</filename> です。
263                 デフォルトコントローラにおけるデフォルトのアクションのビュースクリプトは
264                 <filename>application/views/scripts/index/index.phtml</filename>
265                 となります。このファイルを作成し、何か <acronym>HTML</acronym> を入力してみましょう。
266             </para>
268             <programlisting language="php"><![CDATA[
269 <!DOCTYPE html
270 PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
271 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
272 <html>
273 <head>
274   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
275   <title>My first Zend Framework App</title>
276 </head>
277 <body>
278     <h1>Hello, World!</h1>
279 </body>
280 </html>
281 ]]></programlisting>
282         </sect3>
284         <sect3 id="zend.controller.quickstart.go.errorhandler">
285             <title>エラーコントローラの作成</title>
287             <para>
288                 デフォルトで、
289                 <link linkend="zend.controller.plugins.standard.errorhandler">
290                 エラーハンドラプラグイン</link> が登録されています。
291                 このプラグインを使用するには、エラー処理用のコントローラが必要です。
292                 デフォルト設定では、デフォルトモジュールの
293                 <emphasis>ErrorController</emphasis> に <methodname>errorAction()</methodname>
294                 というメソッドがあることを想定しています。
295             </para>
297             <programlisting language="php"><![CDATA[
298 class ErrorController extends Zend_Controller_Action
300     public function errorAction()
301     {
302     }
304 ]]></programlisting>
306             <para>
307                 先ほど説明したディレクトリ構成により、このファイルは
308                 <filename>application/controllers/ErrorController.php</filename>
309                 に配置されることになります。これとは別に、ビュースクリプト
310                 <filename>application/views/scripts/error/error.phtml</filename>
311                 が必要です。その中身は、たとえば次のようになるでしょう。
312             </para>
314             <programlisting language="php"><![CDATA[
315 <!DOCTYPE html
316 PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
317 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
318 <html>
319 <head>
320   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
321   <title>エラー</title>
322 </head>
323 <body>
324     <h1>エラーが発生しました</h1>
325     <p>エラーが発生しました。後ほどもう一度お試しください。</p>
326 </body>
327 </html>
328 ]]></programlisting>
329         </sect3>
331         <sect3 id="zend.controller.quickstart.go.finish">
332             <title>実際に見てみましょう!</title>
334             <para>
335                 ここまでくれば、実際にブラウザでサイトを表示してみることができます。
336                 あなたのドメインが <filename>example.com</filename> だとすると、
337                 以下のいずれかの <acronym>URL</acronym> で先ほど作成したページが表示されることでしょう。
338             </para>
340             <itemizedlist>
341                 <listitem>
342                     <para><filename>http://example.com/</filename></para>
343                 </listitem>
345                 <listitem>
346                     <para><filename>http://example.com/index</filename></para>
347                 </listitem>
349                 <listitem>
350                     <para><filename>http://example.com/index/index</filename></para>
351                 </listitem>
352             </itemizedlist>
354             <para>
355                 これで、実際にコントローラやアクションを作成する準備ができました。
356                 おめでとうございます!
357             </para>
358         </sect3>
359     </sect2>
360 </sect1>
361 <!--
362 vim:se ts=4 sw=4 et: