【问题标题】:Extending main controller (or view) in Yii2在 Yii2 中扩展主控制器(或视图)
【发布时间】:2017-01-16 10:10:16
【问题描述】:

我在很多项目中都使用过 Yii1。 在大多数情况下,我们在主控制器中有一个名为 $bodyClass 的属性,我们在视图中将其用作 $this->bodyClass。

在 Yii2 中,$this 引用视图而不是控制器。而且,所有 Yii2 控制器使用的基本控制器不在应用程序上,而是在 yii 文件夹本身中。

完成我想做的事情的最佳方法是什么? a) 创建我自己的组件/BaseController。我的所有控制器都将从它继承,并且我将访问视图中的属性 $this->context->property b) 扩展 ViewComponent

优点和缺点?还是我的做法完全错误?

【问题讨论】:

    标签: php yii


    【解决方案1】:

    View 类有一个名为 $params 的属性,因此您可以将控制器中的任何变量传递给 View,如下所示:

    $this->view->params['param'] = 'value';
    

    在视图中访问

    /* @var $this yii\web\View */
    
    echo $this->params['param'];
    

    【讨论】:

    • 但是当我尝试访问一个变量时,我总是需要 if (isset($this->params['param']) .... 检查是否存在。当我在yii1 控制器方法,我将变量初始化为null。
    • 您可以在 config/params.php 中的其他参数中定义这些参数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    相关资源
    最近更新 更多