我有一个有方法的控制器。代码在方法中太长了,所以我把一些代码放在其他私有方法中,这样方法就变得可以理解,而不会弄乱它。
现在,当我从URL访问公共方法时,根据参数,它将调用特定的私有方法来处理作业。处理完作业后,我想重定向到URL,但重定向不起作用。
我的代码示例如下:
class SomeClass extends BaseController{
public function getMethodName()
{
//check the params and choose a private method to call
$this->processJob();
}
private function processJob()
{
//process the job and redirect at the end
return Redirect::to('some/url');
}
}
问题是,上面的重定向不起作用。这是为什么?在Codeigniter中,当你使用redirect
时,它在从它调用的地方起作用。
如果上面的代码示例不是正确的方法,那么如果有人能告诉我如何完成它,我将不胜感激。感谢。
答案 0 :(得分:15)
你也必须从$this->processJob()
返回回报。
class SomeClass extends BaseController{
public function getMethodName()
{
//check the params and choose a private method to call
return $this->processJob();
}
private function processJob()
{
//process the job and redirect at the end
return Redirect::to('some/url');
}
}
答案 1 :(得分:2)
根据您的私有函数结果,您可以尝试从公共函数重定向到另一个页面(我认为这是一个更好的解决方案,使您的代码更易于阅读)。 但它可能就像你写的那样......