0

私はcakephpの初心者ですが、どこでも、特にクックブックで答えを探しました。

Cakebookのチュートリアルから「チュートリアルブログ」のフロントエンドとバックエンドを作ろうとしています。/View/Layouts( ) 内に , , という名前admin.ctpauthor.ctpさまざまなレイアウトを作成しdefault.ctp、コントローラーに小さなコードを追加することで、うまくいくと確信できましたが、そうではありませんでした。

    public function beforeFilter() {
    parent::beforeFilter();

    if (isset($this->params['prefix']) && $this->params['prefix'] == 'admin')
    {
        $this->layout = 'admin';
    }
    else if(isset ($this->params['prefix']) && $this->params['prefix'] == 'author')
    {
        $this->layout = 'author';
    }
    else
    {
        $this->layout = 'default';
    }

}

常に最後の default.ctp を選択していますが、その理由がわかりません

4

1 に答える 1

0

(質問の編集で回答。コミュニティ wiki の回答に変換。回答がない質問を参照してください。ただし、コメントで問題が解決されました (またはチャットで拡張) )

OP は次のように書いています。

にプレフィックスを設定していなかったことがわかりました。core.php設定しようとしましたが、進歩がありませんでした。誰かが私のコードに従っていくつかのプレフィックスを設定するのを手伝ってくれたら、私は感謝します。

それにもかかわらず、コントローラーの編集に関する問題を解決し、正常に動作しました。プロではないことはわかっていますが、今のところはうまくいくはずです。

<?php

class ProductsController extends AppController
{
public $helpers= array('Html','Form','Session');
public  $components = array('Session');


public  function index()
{
    if($this->Session->read('Auth.User.role') == 'admin')
    {
        $this->layout = 'admin';
    }
    else if($this->Session->read('Auth.User.role') == 'author')
    {
        $this->layout = 'author';
    }
    else
    {
        $this->layout = 'default';
    }
    $this->set('item',  $this->Product->find('all'));
}?>
于 2015-02-04T16:31:36.617 に答える