2010-06-25 136 views
0

问题是我想调用索引函数,我需要它渲染视图,然后 afterFilter再次重定向到索引函数,并执行相同的操作。像循环一样,问题是它没有渲染它,我尝试使用$ this-> render('index'),但它并不工作,还有其他的事情..CakePhp - 渲染视图+ afterFilter

PS:我没有包括我在索引中的所有代码,因为它没有意义,没有或没有渲染,只是包含了我需要的视图。

function afterFilter() 
{ 

if ($this->params['action'] == 'index') 
{ 
    sleep(3); 
    $this->redirect(array('action'=>'index',$id), null, true); 
} 

} 

THE FUNCTION

function index($ido = 0) 
{ 

$this->set('Operator', $this->Operator->read(null, $ido)); 
$this->set('ido', $ido); 
} 

THE VIEW = INDEX.CTP

<legend>Operator StandBy Window</legend> 
    <?php 



    ?> 

</fieldset> 

    <?php echo $html->link('LogIn', array('controller' => 'operators', 'action' => 'add')); ?> 
    <?php echo $html->link('LogOut', array('controller' => 'operators', 'action' => 'logout',$ido)); ?> 
+1

'$ this-> redirect()'输出一个'Location'标题,将浏览器重定向到一个不同的站点,在这种情况下,在一个循环中。这a)似乎不是一个好主意,并且b)在'afterFilter'中放错了位置。这里真正的目标是什么,为什么你需要循环? – deceze 2010-06-25 07:26:32

+0

为什么不用JavaScript尝试,这很容易... – 2010-06-25 07:30:03

+2

我也会质疑这种功能背后的逻辑,它似乎不合逻辑,并且会导致糟糕的系统设计。 – 2010-06-25 08:53:29

回答

1

一个函数,不断地检查我的数据库为CH愤怒,如果改变发生病重定向,如果不是,我需要有'检查数据库'和'呈现视图'的恒定循环。

这是不可能完全在PHP的服务器上,特别是不使用CakePHP的模板系统。 PHP只是在服务器上“制作页面”,并以线性方式将它们发送到浏览器。如果您在服务器上循环,则页面内容将重复:

Normal content 
Normal content 
Normal content 
<redirect> 

要重定向客户端,您需要输出标头。标题需要先输出。如果您已经循环几次并且内容已经发送给客户端,则不能再重定向。

有两种方式: