假设我有一个控制器,我想将两个方法从method1重定向到method2,但由于以下错误而无法实现:
Chrome:Error 310 (net::ERR_TOO_MANY_REDIRECTS): There were too many redirects.
火狐:The page isn't redirecting properly
我该如何解决这个问题?
class Site extends CI_Controller {
function method1() {
{ ... Some Code ... }
redirect('site/method2');
}
function method2() {
{ ... Rest of the code ... }
}
}
答案 0 :(得分:1)
你可以这样做.........
class example extends CI_Controller{
public function __construct()
{
parent::__construct();
}
public function method1(argument1)
{
//your code
}
public function method2(argument2)
{
//your code
$this->method1(arg);
or
echo '<script language="javascript">top.location.href="'.ROOT_FOLDER.'/example/method1/'.$argument.'";</script>';
}
答案 1 :(得分:1)
问题是您必须检查当前的url
是否与您计划重定向的网址相同,然后不再重定向就是一个示例,
class Site extends CI_Controller {
function method1()
{
if(// all is GOOD)
{
$this->redirect('site','method2','args');
}else{
// Do something if the code fails
}
}
function method2()
{
if(// all is GOOD)
{
$this->redirect('site','method1','args');
}else{
// Do something if the code fails
}
}
function check_redirect($controller,$method,$args)
{
if($this->router->class !== $controller AND $this->router->method !== $method)
{
redirect($controller.'/'.$method.'/'.$args);
}
}
}
当The page isn't redirecting properly
重定向到method1
时会发生 method2
,然后当到达method2
时,它会再次重定向回method1
,完成无重定向的重定向周期。< / p>
这只是基本没有放任何错误处理。