我想知道它们之间的区别:
$this->forward("module", "action");
和
$this->redirect("module/action");
我的第一个猜测是,一个意味着一个新的请求,而另一个不是,但我不确定。
发布于 2009-05-29 15:29:00
在某些情况下,操作执行通过请求新的操作执行来结束。例如,在POST
请求中处理表单提交的操作通常会在更新数据库后重定向到另一个操作。另一个例子是操作别名: index操作通常是显示列表的一种方式,实际上是转发到列表操作。
action类提供了两个方法来执行另一个操作:
如果该操作将调用转发到另一个操作:
$this->forward('otherModule', 'index');
如果该操作导致web重定向:
$this->redirect('otherModule/index');
$this->redirect('http://www.google.com/');
在重定向或转发之间的选择有时很棘手。要选择最佳解决方案,请记住转发是应用程序内部的,并且对用户是透明的。对于用户而言,显示的URL与请求的URL相同。相反,重定向是发往用户浏览器的消息,涉及来自浏览器的新请求和最终得到的URL中的更改。
如果该操作是从使用method="post"
提交的表单中调用的,则应始终执行重定向。主要优点是,如果用户刷新生成的页面,则不会再次提交表单;此外,back按钮可以按预期显示表单,而不是显示询问用户是否要重新提交POST
请求的警告。
https://stackoverflow.com/questions/926482
复制相似问题