2016-12-10 5 views

答えて

3

を試してみてください.... sitecontrollerで親コントローラにコンストラクタを作成することはできませんが、プロジェクトのレイアウトとしての主なレイアウトを使用し、それはですコントローラーには別のレイアウトを使用するか、レイアウト名を変更してそのコントローラーのレイアウトを使用してコントローラークラスのレイアウトプロパティを定義し、レイアウトの名前をそのプロパティの文字列値。

これにより、そのコントローラのレイアウトが、選択した名前の要求されたレイアウトに変更されます。ここで

は、あなたのケースでは、コードです:

class SiteController extends Controller 
{ 
    public $layout = '[Your Layout Name]'; 

    . 
    . 
    . 
} 

はP.S:コンストラクタは、あなたのクラスのインスタンスを作成するたびに実行され、この場合には、それを使用することは論理的ではない方法です。

1

:だから私はこのように設定したい:

class SiteController extends Controller { 

public function __construct(){ 
    $this->layout = 'admin'; 
} 
..... 

をしかし、私は次のエラーを取得しています。私は自分のコードを次のように変更しました:

class SiteController extends Controller { 

    public function init() { 
     $this->layout = 'admin'; 
    } 
.... 
+0

init()に入れる必要はありません... Sobhan Bagheriのようにクラスメンバーとして入れるだけで十分です。この方法でコードが短くなり、不要な操作をしない –

0

あなたのsitecontrollerは親コントローラにも及んでいます。だから、

は、デフォルトのyii2ではサイトコントローラに

public function init(){ 

} 

を使用して

関連する問題