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

     2023-02-22     107

关键词:

【中文标题】Cakephp 内部从控制器重定向到另一个控制器【英文标题】:Cakephp internal redirect from controller to another controller 【发布时间】:2011-05-13 02:45:38 【问题描述】:

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

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

一些细节:

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

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

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

【问题讨论】:

“内部重写”通常使用 Routes 完成。您的“控制器调度程序”有什么特别之处,以至于您无法使用路由做同样的事情? 如你所说,解决方案是在数据库和路由之间进行交互......但我不知道是否可能 您希望一个模型的数据显示在另一个模型的控制器操作中? @apelliciari 我有同样的问题,但如果我使用 header() 函数,它会更改浏览器中的网址。我需要什么:myapp.com/Basketball url 应该加载与 myapp.com/sports/display/basketball 相同的页面内容。如果我尝试标题,它将加载篮球相关内容,但 url 也会在浏览器中更改。有什么建议吗? 我想你需要setAction() 方法 【参考方案1】:

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('Location: http://call/my/url');
exit();

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

【讨论】:

是的,你是对的,我混淆了标题的使用。我正在尽快修改这个问题。我需要一些类似 htaccess url 重定向(及其透明度) 仅供参考,您也可以使用标头转到相对路径【参考方案2】:

通常,将 URL 连接到控制器是路由的工作。如果您的逻辑相当复杂并且普通路由无法解决,您甚至可以编写自己的路由解析器类来执行更复杂的逻辑(这些都在手册中)。

如果此路由逻辑涉及数据库查询或任何其他类型的控制器逻辑,并且可能导致基于某些内部状态的相同 URL 的输出非常不同,那么您正在制作一个非常 RESTless 的应用程序,我会提交你应该重新考虑你想要做什么。话虽如此,您可以使用$this->render() 从任何控制器操作呈现任何视图。每个视图的控制器逻辑可以放在 AppController 中,或者可能(部分)放在要从任何地方调用的模型中。因此,路由不是“重定向”到不同的控制器,而是像往常一样路由到特定的控制器操作,该操作动态调用它需要调用的代码,然后渲染它需要渲染的视图。

如果您希望您的应用保持在同一个 URL 上但显示非常不同的内容,您可能还应该考虑制作一个 AJAX 应用。

适合您的解决方案可能介于两者之间。

【讨论】:

将 segue 从一个视图控制器重定向到另一个视图控制器

】将segue从一个视图控制器重定向到另一个视图控制器【英文标题】:Redirectseguefromoneviewcontrollertoadifferentone【发布时间】:2015-09-0407:24:57【问题描述】:对于这个看似基本的问题,我找不到答案。假设我有一个带有两个视图控制... 查看详情

Nest.Js 从一个控制器重定向到另一个

】Nest.Js从一个控制器重定向到另一个【英文标题】:Nest.JsRedirectfromacontrollertoanother【发布时间】:2019-10-1706:25:24【问题描述】:所以我有这个模块:@Module(imports:[],controllers:[AppController,AnotherController],providers:[],)在AppController的某些... 查看详情

Ionic Framework:无法从我的控制器重定向到另一个页面?

】IonicFramework:无法从我的控制器重定向到另一个页面?【英文标题】:IonicFramework:Can\'tredirecttoanotherpagefrommycontroller?【发布时间】:2015-02-2020:11:01【问题描述】:在我的控制器中单击时无法让我的应用切换到另一个页面。如果... 查看详情

如何使用命名 URL 映射从控制器重定向?

】如何使用命名URL映射从控制器重定向?【英文标题】:HowtoredirectfromacontrollerusinganamedURLmapping?【发布时间】:2011-04-2118:27:40【问题描述】:我有一个如下的URL映射:staticmappings=nameregister:"/register"controller="account"action="createuser"我... 查看详情

从基本控制器重定向到操作方法

】从基本控制器重定向到操作方法【英文标题】:redirecttoactionmethodfrombasecontroller【发布时间】:2013-06-2023:35:04【问题描述】:我在我的基本控制器类中初始化了方法,每当执行任何操作方法时都会调用该方法。在每个操作方法... 查看详情

如何在 IOS 应用程序中从视图控制器重定向回主故事板

】如何在IOS应用程序中从视图控制器重定向回主故事板【英文标题】:HowtoredirectbackfromViewcontrollertoMainStoryboardinIOSapp【发布时间】:2013-05-2405:36:24【问题描述】:在我的IOS应用程序中,我有一个关于从视图控制器重定向到主故事... 查看详情

如何将模型属性从一个 Spring MVC 控制器传递到另一个控制器?

】如何将模型属性从一个SpringMVC控制器传递到另一个控制器?【英文标题】:HowtopassmodelattributesfromoneSpringMVCcontrollertoanothercontroller?【发布时间】:2011-11-1718:46:58【问题描述】:我正在从一个控制器重定向到另一个控制器。但我... 查看详情

使用弹簧控制器重定向到外部链接[重复]

】使用弹簧控制器重定向到外部链接[重复]【英文标题】:Redirecttoexternallinkusingspringcontroller[duplicate]【发布时间】:2014-07-0421:28:31【问题描述】:我遇到了一个案例,我必须将链接从特定控制器重定向到外部url。我尝试过很多类... 查看详情

从 MVC 4 控制器重定向到 .aspx 页面

】从MVC4控制器重定向到.aspx页面【英文标题】:Redirecttoan.aspxpagefromaMVC4Controller【发布时间】:2015-03-1204:17:06【问题描述】:我对MVC很陌生,并且一直在努力在各个页面之间进行重定向。我正在尝试从amController重定向到项目根文... 查看详情

从一个控制器动作发布到另一个控制器动作(不重定向)

】从一个控制器动作发布到另一个控制器动作(不重定向)【英文标题】:Postfromonecontrolleractiontoanother(notredirect)【发布时间】:2010-09-3000:13:12【问题描述】:我有一个动作,如果它满足某些条件,我需要转发到另一个动作,但... 查看详情

如何从 C# 控制器重定向到 URL(带有自定义标头)

】如何从C#控制器重定向到URL(带有自定义标头)【英文标题】:HowtoredirecttoURL(withcustomheaders)fromC#Controller【发布时间】:2019-09-0209:42:31【问题描述】:我需要将用户的浏览器重定向到我的.NETCoreC#控制器操作中的新URL,并使用JWT... 查看详情

从 ASP.NET MVC 控制器重定向到外部 URI

】从ASP.NETMVC控制器重定向到外部URI【英文标题】:RedirecttoexternalURIfromASP.NETMVCcontroller【发布时间】:2010-12-0516:19:20【问题描述】:我正在尝试从操作方法重定向到外部url,但无法使其正常工作。有人能解释一下我的错误吗?publi... 查看详情

文件上传进度条干扰控制器重定向

】文件上传进度条干扰控制器重定向【英文标题】:FileuploadprogressbarinterfereswithControllerredirect【发布时间】:2021-11-1610:23:43【问题描述】:我有一个文件提交表单和一个跟踪上传进度的进度条。但是,控制进度条的javascript会干扰... 查看详情

使用“redirecttoaction”从控制器重定向到哈希(代码片段)

您好我想从MvcController返回一个锚点控制器名称=DefaultController;publicActionResultMyAction(intid)returnRedirectToAction("Index","region")这样,当指向索引时,url是http://localhost/Default/#region以便<ahref=#region>thecontentshouldbefocushere</a>我不是问你... 查看详情

从一个控制器到另一个控制器的 RedirectToAction

】从一个控制器到另一个控制器的RedirectToAction【英文标题】:RedirectToActionfromonecontrollertoanother【发布时间】:2020-04-3019:37:29【问题描述】:我有一个使用Ajax表单的登录页面。在调用的动作中,我想根据某些标准重定向到不同的... 查看详情

从前一个控制器重定向时未调用 Post 方法

】从前一个控制器重定向时未调用Post方法【英文标题】:Postmethodnotcalledwhenredirectedfrompreviouscontroller【发布时间】:2019-01-1001:25:59【问题描述】:所以我有3个jsp表单。第一个带有一般信息。在完成第一个表单时,它应该基于下拉... 查看详情

Cakephp:将 AppController 抽象到另一个层次,可能吗?

...】:我想知道是否有可能在AppController和我的应用的其他控制器之间添加另一个抽象控制器?这样我的控制器,例如UsersController扩展SecureControllerS 查看详情

Play framework 1.x 重定向删除动作

...】:2013-02-0713:43:17【问题描述】:我想将动作调用从一个控制器重定向到另一个控制器。ListController显示条目列表,每个条目都有一个删除按钮。我不想在视图中使用具体的EntryController调用,因为我有一些稍后要实现的模拟控制... 查看详情