Yii2 控制器触发两次/取决于浏览器
Yii2 Controller Firing Twice / Depending on browser
controller/action 在 some/most 浏览器中触发了两次。
Yii2
Firefox 91.0(64 位)
第一次测试,保持开发控制台关闭。
站点控制器
public function actionTest()
{
$path = \Yii::getAlias('@console') . '/runtime/';
$n = 'A__' . self::random_uppercase(2);
file_put_contents($path . $n . '.txt', time());
return $this->render('test'); // Blank page is fine
}
private function random_uppercase($n = 1)
{
$out = '';
for ($i = 0; $i < $n; $i++) {
$out .= chr(rand(65, 90));
}
return $out;
}
运行 Firefox 中的页面
console/runtime
> A__KW.txt
(删除文件)
打开开发者控制台并刷新页面
console/runtime
> A__XY.txt
> A__JU.txt
动作触发两次。
Chrome
-- 版本 92.0.4515.159(正式版)(64 位)
无论开发控制台是否打开,它都会发生。
动作触发两次。
歌剧
-- Version:78.0.4093.147
无论开发控制台是否打开,它都会发生。
动作触发两次。
任何人都可以重现结果吗?
我在我的几个网站上试过了,结果对我来说是一样的。
有没有人找到限制只能调用一次的方法?
它弄乱了我的 $_SESSION 值
感谢帮助,谢谢。
希望这对其他人有所帮助。
它很微妙,所以如果您不寻找它可能会被忽视。
(至少在我的网站上)
第一个调用来自 page/action (/?r=site/test)
这路由正确。
第二个来自该控制器中的 actionIndex。
我的解决方法是不使用 actionIndex,然后不会发生进一步的操作。
.
我在 actionIndex 中有测试代码片段,所以直到我更改文件名后才注意到它。然后可以看到是page route,然后是index.
如果这还不够清楚,post你的问题,我会尽力回答。
controller/action 在 some/most 浏览器中触发了两次。
Yii2
Firefox 91.0(64 位)
第一次测试,保持开发控制台关闭。
站点控制器
public function actionTest()
{
$path = \Yii::getAlias('@console') . '/runtime/';
$n = 'A__' . self::random_uppercase(2);
file_put_contents($path . $n . '.txt', time());
return $this->render('test'); // Blank page is fine
}
private function random_uppercase($n = 1)
{
$out = '';
for ($i = 0; $i < $n; $i++) {
$out .= chr(rand(65, 90));
}
return $out;
}
运行 Firefox 中的页面
console/runtime
> A__KW.txt
(删除文件)
打开开发者控制台并刷新页面
console/runtime
> A__XY.txt
> A__JU.txt
动作触发两次。
Chrome -- 版本 92.0.4515.159(正式版)(64 位)
无论开发控制台是否打开,它都会发生。
动作触发两次。
歌剧 -- Version:78.0.4093.147
无论开发控制台是否打开,它都会发生。
动作触发两次。
任何人都可以重现结果吗?
我在我的几个网站上试过了,结果对我来说是一样的。
有没有人找到限制只能调用一次的方法?
它弄乱了我的 $_SESSION 值
感谢帮助,谢谢。
希望这对其他人有所帮助。
它很微妙,所以如果您不寻找它可能会被忽视。 (至少在我的网站上)
第一个调用来自 page/action (/?r=site/test) 这路由正确。
第二个来自该控制器中的 actionIndex。
我的解决方法是不使用 actionIndex,然后不会发生进一步的操作。
.
我在 actionIndex 中有测试代码片段,所以直到我更改文件名后才注意到它。然后可以看到是page route,然后是index.
如果这还不够清楚,post你的问题,我会尽力回答。