【问题标题】:Inherit layout from parent module in submodules Yii从子模块 Yii 中的父模块继承布局
【发布时间】:2014-11-07 11:26:26
【问题描述】:

在我的 Yii 应用程序中,我想创建一个管理模块。到目前为止,我已经创建了一个名为“admin”的模块并创建了一个使用布局的登录页面:layout.php。在管理模块中,我想添加我所有的子模块。所以我首先创建了子模块“仪表板”。现在我希望我的所有子模块都有布局 admin.php。

我如何让它工作?

我的应用程序结构如下所示:

application
    modules
        admin
            assets
            controllers
            views
                default
                    - index.php
                    - login.php
                layouts
                    - admin.php
                    - login.php
            modules
                dashboard
                    assets
                    controllers
                    views

我已经为登录页面设置了这样的布局(在管理模块的 defaultController 中):

    $this->layout = "login";
    $this->pageTitle = "Beheersysteem";
    $this->render('login', array('model' => $model));

在 AdminModule.php 文件的 init() 函数中,我还设置了这样的布局:

public function init()
{
    $this->setImport(array(
        'admin.models.*',
        'admin.components.*',
    ));

    $this->layout = 'admin';
}

但是如何让这个管理布局在我的子模块中工作?

【问题讨论】:

    标签: php layout yii yii-modules


    【解决方案1】:

    好好利用这个

    $this->layout = 'application.modules.admin.views.layouts.admin';
    

    【讨论】:

    • 当我在模块的 init() 函数中实现您的代码时,它仍然会继续加载默认布局。我已将布局文件:admin.php 移至:application.views.layouts 文件夹中,并将这行代码添加到模块的控制器中:public $layout = '//layouts/admin';
    【解决方案2】:

    将布局文件移动到应用程序布局文件夹

    application
        views
            layouts
    

    将以下代码行添加到模块的控制器中

    public $layout = '//layouts/admin';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-26
      • 2012-08-24
      • 2019-09-21
      • 1970-01-01
      • 2020-01-23
      • 1970-01-01
      • 2019-12-30
      相关资源
      最近更新 更多