Cakephp内部从控制器重定向到另一个控制器

更新:我写了一些关于在php中使用header的错误陈述;所以忘记那部分:)

我想要的是从另一个控制器获取并显示控制器的视图(带有控制器的数据),而不需要在浏览器中更改URL.

一些细节:

>重定向不起作用,因为是直接重定向(通过浏览器)
> requestAction不允许我正确获取css和图像

我需要这个东西,因为我有一个控制器调度程序,可以在内部重定向到其他控制器.

我认为唯一(正确的)解决方案是在/ config中使用routes.php和Router :: connect
并使用调度程序控制器中的逻辑.

最佳答案
ummm … header()是用于重定向的函数,除非PHP文档错误. (http://php.net/manual/en/function.header.php)cakePHP中的核心使用头部作为重定向功能(参见cake / libs / controller.php的第721-730行).

所以我不确定你的意思“像普通的PHP”. CakePHP是PHP,它只是建立在面向对象的代码上.这不是魔术或扭曲的做事方式.所以要在蛋糕中进行重定向,您可以简单地使用:

$this->redirect(array('controller' => 'my_controller', 'action' => 'my_action'));

它将调用header()函数.

现在.如果您设置为不使用重定向(可能是您要访问外部站点),则可以在代码中调用header().只要确保你把exit();标题调用后:

header('Location: http://call/my/url');
exit();

它的工作方式与重定向相同.这只是很多不必要的额外工作.请记住,使用重定向将维护域名并自动为您构建URL.

转载注明原文:Cakephp内部从控制器重定向到另一个控制器 - 代码日志