Laravel POST 可以路由 return 视图而不是重定向到另一条路由吗?
Can a Laravel POST route return a view instead of redirecting to another route?
我 seen/worked 在很多项目中 Laravel POST 路线如下所示:
Route::post('/some-url', [SomeController::class, 'someMethod']);
控制器及其处理路由的方法如下所示:
class SomeController extends Controller
{
public function someMethod(Request $request) {
// My Logic to do something with the post data - $request
return redirect("/some-other-url");
}
}
按照惯例,在处理 POST 数据后总是重定向到特定的 URL。
我想知道,在处理完 POST 请求后,是否可以只 return 像我们处理 GET 请求那样的视图?我知道它有效,但这只是惯例还是这样做有什么问题?
例如:
class SomeController extends Controller
{
public function someMethod(Request $request) {
// My Logic to do something with the post data - $request
return view("somebladeview")->with(["result" => $result ]);
}
}
该模式称为post-redirect-get, or PRG. It is convention because POST should be used for requests that change data,而GET 应该用于简单地显示数据。
如果您 return 在 POST 之后查看,用户可以点击重新加载,并且(可能无意地)再次更改数据,例如第二次购买东西。通过使用 PRG,用户点击重新加载只是重新加载最后一个 GET,它只是重新显示一些东西。
注意:在您的问题的评论中有一些建议忽略此约定。我认为这是不明智和危险的,这些约定的存在是有充分理由的。
我 seen/worked 在很多项目中 Laravel POST 路线如下所示:
Route::post('/some-url', [SomeController::class, 'someMethod']);
控制器及其处理路由的方法如下所示:
class SomeController extends Controller
{
public function someMethod(Request $request) {
// My Logic to do something with the post data - $request
return redirect("/some-other-url");
}
}
按照惯例,在处理 POST 数据后总是重定向到特定的 URL。
我想知道,在处理完 POST 请求后,是否可以只 return 像我们处理 GET 请求那样的视图?我知道它有效,但这只是惯例还是这样做有什么问题?
例如:
class SomeController extends Controller
{
public function someMethod(Request $request) {
// My Logic to do something with the post data - $request
return view("somebladeview")->with(["result" => $result ]);
}
}
该模式称为post-redirect-get, or PRG. It is convention because POST should be used for requests that change data,而GET 应该用于简单地显示数据。
如果您 return 在 POST 之后查看,用户可以点击重新加载,并且(可能无意地)再次更改数据,例如第二次购买东西。通过使用 PRG,用户点击重新加载只是重新加载最后一个 GET,它只是重新显示一些东西。
注意:在您的问题的评论中有一些建议忽略此约定。我认为这是不明智和危险的,这些约定的存在是有充分理由的。