Cakephp 从 Controller 到另一个 Controller 的内部重定向

标签 cakephp redirect controller routes internal

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

我想要的是从另一个 Controller 获取并显示 Controller 的 View (带有 Controller 的数据),而不需要在浏览器中更改 url。

一些细节:

  1. 重定向无法完成此任务,因为它是直接重定向(通过浏览器)
  2. requestAction 不允许我正确获取 CSS 和图像

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

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

最佳答案

ummm... header() 是用于重定向的函数,除非 PHP 文档有误。 (http://php.net/manual/en/function.header.php)cakePHP 的核心使用 header 来实现重定向功能(参见 cake/libs/controller.php 的第 721 - 730 行)。

所以我不确定你的意思是“像普通的 PHP 一样”。 CakePHP 是 PHP,它只是构建在面向对象的代码之上。这不是魔法或扭曲的做事方式。因此,要在 cake 中进行重定向,您可以简单地使用:

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

它会调用 header() 函数。

现在。如果您坚决不使用重定向(也许您要访问外部站点),您可以在代码中调用 header() 。只要确保你输入了 exit();在 header 调用之后:

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

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

关于Cakephp 从 Controller 到另一个 Controller 的内部重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4233398/

相关文章:

php - Cakephp Web 服务问题 "add"

在将 Debug模式更改为 2 之前,Cakephp 更新不会产生任何效果

javascript - 如何根据指令中的属性设置添加附加功能?

php - 如何启用 dodirectpayment API?

php - cakePHP 文件下载未找到或不可读

c++ - 动态分配的控制台 I/O 的 Visual Studio 2015 问题

jsf - Spring Security 登录后,我被重定向到 CSS/JS 资源而不是 HTML 页面

php - .htaccess 允许图像直接显示

php - CakePHP 在登录时保存日期/时间

java - 使用 spring 包含页面