谁一开始就是大神?

addFlash()的内容不能被正常销毁

正常情况下addFlash()添加的内容会在getFlash()之后被销毁,然而这两天在将 YII_ENV 参数配置为 prod(web/index.php : defined('YII_ENV') or define('YII_ENV', 'prod');) 之后发现自动销毁失效,添加的内容会一直存在,后来逐步检查,进一步发现是问题出在config/web.php:

if (YII_ENV_DEV) {
    // configuration adjustments for 'dev' environment
    $config['bootstrap'][] = 'debug';
    $config['modules']['debug'] = 'yii\debug\Module';
    $config['bootstrap'][] = 'gii';
    $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',
        #'password' => 'gii',
        'allowedIPs' => ['127.0.0.1', '10.0.0.*', '*.*.*.*'] // 按需调整这里
    ];
}

prod模式下没有加载debug模块,在手动加载debug模块之后,flash的销毁恢复正常。
即 启用这两行代码:

$config['bootstrap'][] = 'debug';
$config['modules']['debug'] = 'yii\debug\Module';

找了半天没发现debug module 和 flsah,session之间有什么关系,不理解,不科学,故求助各位~~

flash内容存储在session中, 和debug module没什么关系.
addFlash('a', 'b') 之后, 再getFlash('a')之后, 是可以销毁这条消息.
但是 : 是在下次请求中销毁, 本次请求的后续处理中还存在.
在vendor\yiisoft\yii2\web\Session.php中是有两处调用$this->updateFlashCounters();的,我在慕课网看的yii电商教程老师给的代码少了一行,就导致getFlash一直能够获取值

赞(0) 打赏
未经允许不得转载:菜鸟之家 » addFlash()的内容不能被正常销毁

评论 抢沙发

登录

找回密码

注册