Yii2:设置特定控制器的布局

时间:2016-12-10 05:53:20

标签: php yii yii2 yii2-advanced-app

我想更改控制器内所有视图的布局。所以我想这样设置:

class SiteController extends Controller {

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

但是我收到以下错误:

  

在null

上调用成员函数getUniqueId()

3 个答案:

答案 0 :(得分:4)

默认情况下,yii2使用主布局作为项目及其控制器的布局,但是如果要为控制器使用其他布局或更改布局名称,并使用该布局让控制器必须定义布局属性您的控制器类,并将布局名称作为该属性的字符串值。

这将使用您选择的名称将该控制器的布局更改为所需的布局。

以下是您案例中的代码:

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

   .
   .
   .
}

P.S:构造函数是在创建类的实例时运行的方法,在这种情况下使用它是不合逻辑的。

答案 1 :(得分:1)

我使用了init()并按预期工作。我将代码更改为:

rScan:=rScan+1;
// create panel
with TPanel.Create(self) do begin
  Parent:=sxScan;
  Name:='pnScanItem'+IntToStr(rScan);
  Left:=0;
  Top:=4+(rScan-1)*67;
  Width:=983;
  Height:=68;
  Caption:='';
  vHandle:=Handle;
end;
// create label
with TLabel.Create(self) do begin
  Parent:=TWinControl(vHandle);
  Name:='lbScanNam'+IntToStr(rScan);
  Left:=11;
  Top:=4;
  Font.Size:=14;
  Caption:='.....';
end;

答案 2 :(得分:0)

您的sitecontroller扩展到父Controller。所以你可以在父控制器中创建构造函数,但不能在sitecontroller ....

中创建

尝试使用

public function init(){

}
站点控制器中的