■ユーザーズフォーラム リニューアルのお知らせ
新規投稿は新ユーザーズフォーラムにお願いします。

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/」に入れます。

次に新たに作ったコントローラー部分でレイアウトファイルを宣言します。
class HogeController extends AppController {

var $layout = "hogehoge"; //←ココっす

function admin_index() {};
};

これでこのコントローラー内では「hogehoge」がレイアウトとして適用を受けると思います。
お試しください〜〜。

goichi > Re: layouts/admin/default.php の読み込み @ 2012/6/23 23:32
すみません、自己レスです(^^;;;;;;;
質問内容を取り違えていました。。。。すみません。。。。

私は機能拡張をプラグインでしかやったことがないのですが、
おっしゃるとおり、「admin_」プレフィックスをつけるくらいしか、意識していませんでしたが、
もしかしたら使用するコンポーネントとか(Auth)関係あるのかな・・・・。

ちなみに私は
var $components = array('BcAuth','Cookie','BcAuthConfigure');

みたいな感じで、プラグインの管理画面側のコンポーネントは作っています。

その際、「$layout」は特に指定していませんが、ちゃんと管理画面用のレイアウトが読み込まれています。
お役に立たないかもしれませんが、以上、お返事する次第です。
binbin4649 > Re: layouts/admin/default.php の読み込み @ 2012/6/24 12:43
返信ありがとうございます。


var $components = array('BcAuth','Cookie','BcAuthConfigure');


上記はマニュアルにもあったので書いてありますが、
自動で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
baserCMS総合サービスサイト ビーコミ

ログイン
ユーザー名:
パスワード:


  新規登録 / パスワード紛失

検索

facebook
フォーラムで悩みが解決した場合など、よかったら「いいね!」をポチっとクリックしてください!質問の回答者や開発者の励みになります

フォーラムガイド


関連リンク

オンライン状況
29 人のユーザが現在オンラインです。 (29 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 29