Quantcast
Channel: Magento[マジェント]情報サイト
Viewing all articles
Browse latest Browse all 265

Magentoのアーキテクチャ : コントローラ

$
0
0

前回、モデルについていろいろ調べてみることでより理解が深まりました。
Magentoは、リクエストがあるとまずindex.phpを呼び出し、
呼び出すコントローラを特定し、モデルでデータを取り出し、ブロックで画面を表示します。
今回はコントローラがどのように呼び出されているかを調べてみました。

・コントローラーの設定

・ルーター
コントローラーはルーターによって呼び出されています。
ルーターは以下の記述で設定されています

Core/etc/config.xml

 ..... <web>     <routers>         <admin><area>admin</area><class>Mage_Core_Controller_Varien_Router_Admin</class></admin>         <standard><area>frontend</area><class>Mage_Core_Controller_Varien_Router_Standard</class></standard>     </routers> ..... 

 

このルーターを使って、コントローラの特定が行われます。

・config.xml
コントローラーを作る際、config.xmlで以下のような記述をします。

 .... <frontend> <routers> <catalog> <use>standard</use> <args> <module>Mage_Catalog</module> <frontName>catalog</frontName> </args> </catalog> </routers> .... 

 

これで使用するルーター、モジュール、モジュール名などを設定しています。
<use>に設定されているのは先ほどの<web><routers>で設定されているルーターとなります。
<args>に設定されているのはモジュールとモジュール名です。

リクエストがくると、まずルートディレクトリのindex.phpが実行されます。
この中でMageクラスのrun()が呼ばれ、ここで各種の設定読み込みなどが行われます。
(その中に先ほどのルーターのインスタンス生成なども含まれています)
そして、実際のコントローラが呼び出されます。

・URLの書き換え
リクエストのあったURLを書き換えます。
商品管理で「URL key」が設定されていた場合、(URL key).htmlで商品詳細ページにアクセスできるようになっています。
ですが、このままではコントローラーとの結び付けができないため、
モジュール名/コントローラ名/アクション名/引数
という形に書き換えます。
商品ページの場合は、

catalog/product/view/999

という形になります。

・コントローラーの呼び出し
書き換えられたURLからモジュール名を使ってどのルーターが指定されているかを特定ます。
そして、以下のような手順でコントローラーのインスタンス生成をして、アクションを呼び出します。

1. モジュールが特定されるとモジュールのcontrollersフォルダを取得し、リクエストのコントローラー名をつなげてファイル名を作成

2. モジュール名とコントローラ名を使ってコントローラーのクラス名を作成

3. コントローラクラス名の存在を確認、あればそのコントローラーファイルをincludeする

4. コントローラクラス名を使ってコントローラのインスタンスを生成

5. アクション名から実際のアクションメソッド名を作成し、そのメソッドがコントローラに存在するか確認

6. パラメーターをリクエストに設定

7. コントローラーのアクションメソッド呼び出し

コントローラはリクエスト契機で呼ばれるので、
index.phpからの経路をたどっていくと、、いろいろな事前処理があってから
コントローラのアクションメソッド呼び出されていることがわかりました。
後々、そのあたりの処理についても調べたいと思います。
また、コントローラの実ファイルの特定方法や、メソッドの特定方法などから、
ファイル名やメソッド名がどうしてこのような書き方をしているのか?という疑問が解けました。
意味が理解できていれば、コーディングもしやすくなるのではないでしょうか。

 


Viewing all articles
Browse latest Browse all 265

Trending Articles