Layout Yii为布局创建BaseController

Layout Yii为布局创建BaseController,layout,yii,controller,Layout,Yii,Controller,我读这篇文章是为了“如何在应用程序中实现多个页面布局””很容易,直到它说:要对所有布局使用控制器,最好在protected/components/BaseController.php中创建BaseController,这很容易,我创建了包含以下内容的php文件: abstract class BaseController extends CController { public $crumbs=array(); public $portlets=array(); publ

我读这篇文章是为了“如何在应用程序中实现多个页面布局””很容易,直到它说:要对所有布局使用控制器,最好在protected/components/BaseController.php中创建BaseController,这很容易,我创建了包含以下内容的php文件:

abstract class BaseController extends CController
{
    public $crumbs=array();
    public $portlets=array();
    public $portlets2=array();
}
我把这些线放在组件部分的main.ph上:

    'BaseController'=>array(
            'class'=>'application.components.BaseControllert',
        ),  
当我在布局中使用时:

$this->portlets

它回来了

未定义属性“HomeController.Portlet”

这意味着它在主控制器中查找该变量

我怎样才能解决这个问题

  • 根据此链接编写的所有布局代码

您只是忘记了所有控制器都必须扩展该类

仔细阅读:

然后我们可以从这个基类派生出每个具体的 控制器类

您只需修改控制器,如下所示:

class MyController extends BaseController {
.....
}