【问题标题】:PHP Fatal Error – yii\base\ErrorException Access to undeclared static property: yii\filters\HttpCache::$cacheControlHeaderPHP 致命错误 – yii\base\ErrorException 访问未声明的静态属性:yii\filters\HttpCache::$cacheControlHeader
【发布时间】:2016-05-14 23:49:47
【问题描述】:

我正在尝试设置此属性,但它失败了。

代码(视图):

        if (Yii::$app->user->identity && Yii::$app->user->identity->admin):
          \yii\filters\HttpCache::$cacheControlHeader = 'no-cache'; // prevent Fastly from caching admin links

文档:http://www.yiiframework.com/doc-2.0/guide-caching-http.html#cache-control

Yii 2.0.7.

【问题讨论】:

    标签: php yii2


    【解决方案1】:

    那个属性isn't a static property

    要设置缓存控制标头,您需要将该类添加为控制器过滤器并在那里设置属性。像这样的东西应该可以工作(关于扩展控制器/行为定义的 YMMV):

    public function behaviors() {
        return array(
            array(
                "class" => "yii\filters\HttpCache",
                "cacheControlHeader" => Yii::$app->user->identity && Yii::$app->user->identity->admin ? 
                    "no-cache" : "public, max-age=3600",
            ),
        );
    }
    

    【讨论】:

    • 真的吗?如果我在很多页面中有那个部分,并且它使用了很多控制器怎么办?我必须将它添加到每个控制器?
    • 理想情况下,您应该拥有一个主控制器,所有其他控制器(或您想要包含此功能的控制器)都从该控制器扩展
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    • 2017-03-23
    • 2015-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多