身体类中的当前控制器和动作?

时间:2016-03-01 15:10:27

标签: class controller yii2 action

我需要根据当前的控制器和操作来改变布局样式。

如何在体型中添加当前控制器和动作?

5 个答案:

答案 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');
 }