在某些情况下,操作执行以请求新的操作执行结束。例如,处理表单提交的操作
POST
请求通常在更新数据库后重定向到另一个操作。另一个例子是操作别名:索引操作通常是显示列表的一种方法,实际上是转发到列表操作。
action类提供了两种方法来执行另一个操作:
如果操作将呼叫转发到另一个操作:
$this->forward('otherModule', 'index');
如果操作导致Web重定向:
$this->redirect('otherModule/index');
$this->redirect('http://www.google.com/');
在重定向或转发之间的选择有时很棘手。要选择最佳解决方案,请记住转发是应用程序内部的,对用户是透明的。就用户而言,显示的URL与请求的URL相同。相反,重定向是指向用户浏览器的一条消息,涉及到来自该浏览器的新请求和最终生成的URL的更改。
如果从提交的表单调用操作
method="post"
,您应该始终执行重定向。主要优点是,如果用户刷新结果页,则不会再次提交表单;此外,后退按钮按预期工作,显示表单,而不是提示用户是否要重新提交
柱
请求。