【发布时间】:2018-01-21 04:08:09
【问题描述】:
我有两个表单页面在我的路由中接受 POST 方法:
web.php
Route::post('select-room', ['as'=>'select-room','uses'=>'ClientBookingController@selectRoom']);
Route::post('book-room', ['as'=>'book-room','uses'=>'ClientBookingController@bookRoom']);
功能就是这样工作的。我将“select-room”页面中的数据提交到“book-room”
在“selectRoom”和“bookRoom”方法中有验证
public function selectRoom(Request $request){
$this->validate($request, [
'start_date' => 'required|date|after:yesterday',
'end_date' => 'required|date|after:start_date',
'number_people' => 'required',
'number_kids' => 'required'
]);
}
public function bookRoom(Request $request){
$validator = Validator::make($request->all(), [
'start_date' => 'required|date|after:yesterday',
'end_date' => 'required|date|after:start_date',
'people' => 'required',
'days_staying' => 'required',
'free_days' => 'required',
'room' => 'required|array',
'roomCost' => 'required|array',
'roomPeople' => 'required|array',
'totalCost' => 'required',
'name' => 'required|string|max:255',
'email' => 'required|email|string|max:255|unique:users',
'password' => 'required|string|min:6|max:255|confirmed'
]);
if ($validator->fails())
{
return redirect()->back()->withErrors($validator)->withInput();
}
}
当我提交数据并且它没有在 'bookRoom' 方法中验证时,验证会向 'select-room' url 发送一个 get 请求而不是 post 请求,我最终会遇到 MethodNotAllowedHttpException 错误。
我仍然理解 Laravel 是否有可能你不能有一个逻辑流程,你有一个帖子页面,然后发布到另一个帖子页面,如果在第二个帖子页面上失败将导致错误,因为你的路由只允许发布方法。验证功能是否限制您必须将获取请求作为错误的应急措施,或者我是否可以设置一些可以复制验证响应集中的发布请求的东西?
【问题讨论】:
-
任何重定向都是使用 GET 执行的。您的表单应呈现为 GET 方法,并将数据提交为 POST 请求。
-
感谢您的澄清。是否可以提供此过程的示例,假设“selectRoom”方法已经处理了帖子,如何将重定向到“book-room”作为 GET 以及我将如何传递数据。我已经研究过,但是如果您有任何链接,我可以参考以帮助我理解这将是很好的。
标签: php laravel validation