当我开始使用 ZF2 时,我使用的第一个模块是 ZfcUser。当我调试它的控制器代码时,我发现了一种奇怪的方式(至少对我来说)来管理操作。我找到了类似的代码
$prg = $this->prg('zfcuser/changepassword');
if ($prg instanceof Response) {
return $prg;
} elseif ($prg === false) {
return array(
'status' => $status,
'changePasswordForm' => $form,
);
}
//VALIDATE FORM AND DATABASE STUFF
(...)
行为如下:
- 第一次加载 $prg 是假的,所以它返回表单。
- 当您提交页面时,$prg 是 Response 的一个实例,因此它返回 $prg。
- 当返回 $prg 时,再次调用相同的函数并且 $prg 变成一个包含所有已发布数据的数组,因此它跳转到表单和数据库内容的验证。
我认为这是一种奇怪的方法,所以我用简单的 request->isPost() 覆盖了所有需要的函数。我发现处理发布的第一个负载/数据更容易。
直到现在我才更加重视它。当我尝试上传文件时,我再次面临 Post-Redirect-Get 方法:似乎需要防止用户在表单上出现验证错误时重新选择文件并重新上传。
Post-Redirect-Get 的意义何在?你什么时候推荐使用它(除了评论文件上传)?