我目前正在创建一个网站,一旦用户到达,他们就会受到一个表单的欢迎,他们用这个表单输入他们唯一的ID和DoB。输入信息并单击提交后,它们将被发送到主表单,其中只有一些信息,用户必须输入其余信息。当我尝试提交表单时出现问题,因为我一直收到以下错误:
at RouteCollection->methodNotAllowed(array('POST', 'PATCH'))
注意:我的路线中不需要任何变量。 (例如:我想要'形式/人'而不是'形式/ {person_id}')。另外,我只包含了有关错误的相关信息。
gate.blade.php - (这是用户输入身份证和出生日期的地方):
{!! Form::open(array('action' => 'JurorsController@form', 'class' => 'form-inline')) !!}
form.blade.php - (这是用户必须填写并提交的主要表单):
{!! Form::open(['url' => action('JurorsController@submit'), 'method' => 'PATCH', 'class' => 'form-inline']) !!}
routes.php文件:
Route::patch('jurors/form', 'JurorsController@submit');
Route::get('jurors', 'JurorsController@gate');
Route::post('jurors/form', 'JurorsController@form');
JurorController @提交
public function submit(FormSubmitRequest $request)
{
//never reaches this point nor executes submit... instead redirects to gate IF it doesn't return 'MethodNotAllowedHttpException' error.
dd($request);
}
我唯一一次设法让它没有向我显示'MethodNotAllowedHttpException'异常,而是被重定向到gate.blade.php页面。如果您对我有任何疑问或需要我做任何事情,请给我留言,我会尽快回复。
感谢。
答案 0 :(得分:1)
在我看来,你的问题是我们路线中的网址。你正在重复它们。
首先,我建议使用命名路由,因为它会在路由之间给你更多的定义。我将您的路线改为
Route::put('jurors/submit',[
'as' => 'jurors.submit',
'uses' => 'JurorsController@submit'
]);
Route::get('jurors',[
'as' => 'jurors.gate',
'uses' => 'JurorsController@gate'
]);
Route::post('jurors/form', [
'as' => 'jurors.form',
'uses' => 'JurorsController@form'
]);
同样在您的提交路线上,您为什么要使用PATCH请求。你不会使用包含所有数据的POST请求吗?如果您仍然需要使用Patch,那么您应该在路线中使用put
。
测试和调试的另一种方法是使用any
查看是否是导致错误的HTTP请求
Route::any('jurors/submit',[
'as' => 'jurors.submit',
'uses' => 'JurorsController@submit'
]);
然后,您可以在form::open()
中使用您的路线名称
{!! Form::open(array('route' => 'jurors.form', 'class' => 'form-inline')) !!}
希望这有帮助