我想更改控制器内所有视图的布局。所以我想这样设置:
class SiteController extends Controller {
public function __construct(){
$this->layout = 'admin';
}
.....
但是我收到以下错误:
在null
上调用成员函数getUniqueId()
答案 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(){
}
站点控制器中的