如何在Yii2中自定义引导模板?

如何在Yii2中自定义引导模板?,yii,yii2,Yii,Yii2,我想自定义此引导模板。 我有这样的模板: Pic 1 实际上,我将引导模板的html放在了views/layout/main.php中。因此,模板将始终存在。但是,我想让主页中的菜单可以不同于views/layout/main.php中模板上的菜单。我想让菜单与众不同。是这样的: 第一个页面类似主页,模板如下: 图2 当我选择2012年时,页面应该是这样的: 图3 如你所见,图2和图3的不同之处在于侧边栏中的“菜单”。我想让菜单在图3中保持一致。因此,当我打开另一个菜单时,模板保持一致。当

我想自定义此引导模板。 我有这样的模板:

Pic 1

实际上,我将引导模板的html放在了
views/layout/main.php
中。因此,模板将始终存在。但是,我想让主页中的菜单可以不同于
views/layout/main.php
中模板上的菜单。我想让菜单与众不同。是这样的: 第一个页面类似主页,模板如下:

图2

当我选择2012年时,页面应该是这样的:

图3

如你所见,图2和图3的不同之处在于侧边栏中的“菜单”。我想让菜单在图3中保持一致。因此,当我打开另一个菜单时,模板保持一致。当我将源代码放在views/layout/main.php中时,这是可能的。但是,图2呢?这个页面有不同的菜单

这是我在
views\layout\main.php
中的模板代码:


为不同的页面创建不同的布局。您可以将布局用于特定操作和控制器,如下所示:

如果要对控制器中的所有操作使用布局

class SiteController extends Controller //controller name
{
    public $layout="main-template-1"; //layout name
     // actions
}
如果要对特定操作使用布局,请使用

public function actionIndex() // action name
{
$this->layout = "main-template-1"; // layout
}

为不同的页面创建不同的布局。您可以将布局用于特定操作和控制器,如下所示:

如果要对控制器中的所有操作使用布局

class SiteController extends Controller //controller name
{
    public $layout="main-template-1"; //layout name
     // actions
}
如果要对特定操作使用布局,请使用

public function actionIndex() // action name
{
$this->layout = "main-template-1"; // layout
}

如果它是您想要更改的菜单项,如图1和图2所示,您可以 从url本身获取信息,并在

views\layout\main.php
另外,如果您有不同的控制器,您可以通过

$controller = strtolower(Yii::$app->controller->id);

$action = strtolower(Yii::$app->controller->action->id);

然后根据您的操作和控制器,您可以显示隐藏菜单

,如果它是您想要更改的菜单项,如图1和图2所示,您可以 从url本身获取信息,并在

views\layout\main.php
另外,如果您有不同的控制器,您可以通过

$controller = strtolower(Yii::$app->controller->id);

$action = strtolower(Yii::$app->controller->action->id);

然后根据您的操作和控制器,您可以显示隐藏菜单

您可以使用动态块:

<?php $this->beginBlock('block1'); ?>
...content of block1...
$this->endBlock(); ?>

…block1的内容。。。
$this->endBlock();?>

您可以使用动态块:

<?php $this->beginBlock('block1'); ?>
...content of block1...
$this->endBlock(); ?>

…block1的内容。。。
$this->endBlock();?>