首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Symfony中重定向和转发有什么区别?

在Symfony中重定向和转发有什么区别?
EN

Stack Overflow用户
提问于 2009-05-29 15:07:03
回答 1查看 15K关注 0票数 19

我想知道它们之间的区别:

代码语言:javascript
复制
$this->forward("module", "action");

代码语言:javascript
复制
$this->redirect("module/action");

我的第一个猜测是,一个意味着一个新的请求,而另一个不是,但我不确定。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-05-29 15:29:00

在某些情况下,操作执行通过请求新的操作执行来结束。例如,在POST请求中处理表单提交的操作通常会在更新数据库后重定向到另一个操作。另一个例子是操作别名: index操作通常是显示列表的一种方式,实际上是转发到列表操作。

action类提供了两个方法来执行另一个操作:

如果该操作将调用转发到另一个操作:

代码语言:javascript
复制
$this->forward('otherModule', 'index');

如果该操作导致web重定向:

代码语言:javascript
复制
$this->redirect('otherModule/index');
$this->redirect('http://www.google.com/');

在重定向或转发之间的选择有时很棘手。要选择最佳解决方案,请记住转发是应用程序内部的,并且对用户是透明的。对于用户而言,显示的URL与请求的URL相同。相反,重定向是发往用户浏览器的消息,涉及来自浏览器的新请求和最终得到的URL中的更改。

如果该操作是从使用method="post"提交的表单中调用的,则应始终执行重定向。主要优点是,如果用户刷新生成的页面,则不会再次提交表单;此外,back按钮可以按预期显示表单,而不是显示询问用户是否要重新提交POST请求的警告。

票数 40
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/926482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档