固定ページはどうやってフロントで表示されるのでしょうか?
| 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 |


