layouts/admin/default.php の読み込み
binbin4649 > layouts/admin/default.php の読み込み @ 2012/6/23 21:53 |
---|
独自の機能(管理画面側)を実装しようと、app以下に下のようにコントローラーをおいたのですが、
baserディレクトリにあるように、layouts/admin/default.php を読み込んでくれず、 layouts/default.php を読み込んでしまいます。 これはどこでコントロールしているんでしょうか? おいたコントローラー app/controllers/hoge_controller.php class HogeController extends AppController { function admin_index() {}; }; 本当は読み込みたいレイアウト app/views/layouts/admin/default.php 読み込んでしまうレイアウト app/views/layouts/default.php baser/以下のコントローラーを見てもどこで制御しているのか見つけられす、 単純にアクションに admin_ を付ければそうなるのかなー、と思っていたのですが、 すいません、ご教授願います。 ■ BaserCMSのバージョン:2.0.2 ■ レンタルサーバー名:さくらVPS ■ スマートURLの利用: [ON] ■ 設置フォルダ: [ドキュメントルート] ■ 利用しているデータベース: [MySQL] ■ PHPスキル(自己評価): [ D] ■ OSの種類:CentOS 5.8 ■ PHPのバージョン:5.3.6 ■ データベース種類・バージョン:MySQL 5.5.13 |
goichi > Re: layouts/admin/default.php の読み込み @ 2012/6/23 23:24 |
---|
こんにちは(^^
viewではなくて、レイアウトですよね。 cakePHPの仕様にのっとって処理すると上手くいくかもしれません。 以下をお試しいただいても良いでしょうか(^^ まず、新たに作成しているレイアウトファイル名を分かりやすいようにdefaultではなく「hogehoge.php」にしますね。 そして、そのファイルを通常のcakePHPレイアウトと同じ「app/views/layouts/」に入れます。 次に新たに作ったコントローラー部分でレイアウトファイルを宣言します。
これでこのコントローラー内では「hogehoge」がレイアウトとして適用を受けると思います。 お試しください〜〜。 |
goichi > Re: layouts/admin/default.php の読み込み @ 2012/6/23 23:32 |
---|
すみません、自己レスです(^^;;;;;;;
質問内容を取り違えていました。。。。すみません。。。。 私は機能拡張をプラグインでしかやったことがないのですが、 おっしゃるとおり、「admin_」プレフィックスをつけるくらいしか、意識していませんでしたが、 もしかしたら使用するコンポーネントとか(Auth)関係あるのかな・・・・。 ちなみに私は
みたいな感じで、プラグインの管理画面側のコンポーネントは作っています。 その際、「$layout」は特に指定していませんが、ちゃんと管理画面用のレイアウトが読み込まれています。 お役に立たないかもしれませんが、以上、お返事する次第です。 |
binbin4649 > Re: layouts/admin/default.php の読み込み @ 2012/6/24 12:43 |
---|
返信ありがとうございます。
上記はマニュアルにもあったので書いてありますが、 自動でadminディレクトリのレイアウトは読んでくれませんでした。 質問には記載していませんでした。すいません。 |
binbin4649 > Re: layouts/admin/default.php の読み込み @ 2012/6/24 15:12 |
---|
たぶん自己解決いたしました。
お騒がせしました。 これまた、たぶんですが、 beforeFilter を上書きしていた、 または、parent::beforeFilter(); を書いてなく、 Authのログイン情報を引き継いでいなくて、 admin扱いになっていなかったのが原因だと思われます。 お騒がせしましたー |
ryuring > Re: layouts/admin/default.php の読み込み @ 2012/6/27 21:56 |
---|
あ、そのとおりです!
管理システムに機能を追加する場合は、 BaserAppController::beforeFilter を通す必要があります。 Twitter:@ryuring |