gpt4 book ai didi

php - Yii 中的 afterAction 缺陷

转载 作者:可可西里 更新时间:2023-11-01 00:43:38 27 4
gpt4 key购买 nike

当我在 Action 中使用重定向时,afterAction 方法(在 controller.php 中)不起作用!我该如何解决这个问题?

注意:我不能使用 beforeAction 因为我在我的 Action 中生成一个变量,我在 afterAction 中使用它提前致谢...

    public function actionHsh()
{
$this->hesam= 502;
$this->redirect(array('charge/printMyCharge'));
}

在 CController 中

    protected function afterAction($action)
{
$number = $this->hesam= 502;

}

最佳答案

让我们从“为什么它不起作用?”开始。因为CController::redirect()定义如下:

public function redirect($url,$terminate=true,$statusCode=302)
{
if(is_array($url))
{
$route=isset($url[0]) ? $url[0] : '';
$url=$this->createUrl($route,array_splice($url,1));
}
Yii::app()->getRequest()->redirect($url,$terminate,$statusCode);
}

CHttpRequest::redirect()定义如下:

public function redirect($url,$terminate=true,$statusCode=302)
{
if(strpos($url,'/')===0 && strpos($url,'//')!==0)
$url=$this->getHostInfo().$url;
header('Location: '.$url, true, $statusCode);
if($terminate)
Yii::app()->end(); // Notice this? We only stop when $terminate is true
}

基本上,您可以做两件事。

1) 使用redirect($url, false) 避免终止

2) 在您的 Controller 中扩展 redirect 方法:

class Foo extends CController 
{
public function redirect($url,$terminate=true,$statusCode=302)
{
if (method_exists($this, 'afterAction')) {
$this->afterAction(null);
}

parent::redirect($url,$terminate,$statusCode);
}
}

关于php - Yii 中的 afterAction 缺陷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26908529/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com