■ユーザーズフォーラム リニューアルのお知らせ
新規投稿は新ユーザーズフォーラムにお願いします。
このフォーラムは閲覧専用のアーカイブです。

固定ページはどうやってフロントで表示されるのでしょうか?

urahyster > 固定ページはどうやってフロントで表示されるのでしょうか? @ 2012/7/7 14:26
管理画面から固定ページを新規追加しました。
このデータがDBへ格納されるのは解ったのですが、フロントからはどういう仕組みでこのページを表示しているのでしょうか?

例えばabcというページを新規追加すると、フロントのURLは「http://ドメイン/index.php/abc」になります。
このページを表示しようとするとき、
cake/dispatcher.phpの_function invokeから以下のdispatchMethodを呼んでいます。

------------------------
[libs/object.php]
function dispatchMethod($method, $params = array()) {
switch (count($params)) {
case 0:
return $this->{$method}();
(中略)
}
}
------------------------
このとき、URLでは「abc」というメソッド名を指定しているので、
$this->abc()
がコールされているはずですが、この様なメソッドは定義されておらず
一体どのように固定ページがフロント表示されているのか疑問です。

どなたかご存知でしたらご教示よろしくお願いします!

ryuring > Re: 固定ページはどうやってフロントで表示されるのでしょうか? @ 2012/7/16 21:00
こんばんは。

固定ページ機能は少し特殊で、CakePHPのPagesControllerを拡張して利用しています。
URLとコントローラー名が直接関連づいていないのは、Routerを利用している為です。
baser/router.php に設定がかかれています。

・pagesテーブルにアクセス
・リクエストしたURLがpagesに登録されているかチェック
・登録されていれば、Routerで、pages コントローラーの、display メソッドを呼び出す設定にする
・登録されていなければ従来のCakePHPの呼び出し規則どおりにコントローラーをメソッドを呼び出す

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ