我需要根据当前的控制器和操作来改变布局样式。
如何在体型中添加当前控制器和动作?
答案 0 :(得分:0)
您可以使用这个简单的代码在您的身体类中添加当前控制器和操作。
<body class="<?php
echo 'co-'.Yii::$app->controller->id. ' ac-' .Yii::$app->controller->module->requestedAction->id;
?>">
当然你可以改变&#39; co - &#39;和&#39; ac - &#39;你喜欢的字符串(&#39;控制器 - &#39;和&#39;动作 - &#39;例如)。
答案 1 :(得分:0)
您可以使用以下代码获取主布局中的当前控制器和操作:
$controller = Yii::$app->controller;
$action = $controller->action->id;
<body class="<?= $controller.' '. $action ?>" >
....
</body>
答案 2 :(得分:0)
您可以这样简单地完成
<?php
$route = Yii::$app->controller->route;
?>
<body class="page-<?= str_replace('/', '-', $route) ?>">
$route = Yii::$app->controller->route;
将返回类似site/index
的内容,因此您只需将/
字符替换为-
答案 3 :(得分:0)
您可以根据操作或控制器更改布局样式:
// action
if (Yii::$app->controller->action->id == 'NameAction') {
# code here
$this->registerCssFile("@web/..."); // Or whatever you need
}
// controller
if (Yii::$app->controller->id == 'NameController') {
# code here ...
}
答案 4 :(得分:-1)
Yii方式是在控制器中定义布局:
class myControllerController extends \yii\web\Controller {
public $layout = 'myLayout';
// Stuff
}
然后,为每个操作呈现不同的视图。
public function myAction() {
[...]
return $this->render('myaction');
}