Laravel:路线返回404页的形式提交
web.php路线:
Route::post('/admin/users/action', [
'uses' => '[email protected]',
'as' => 'user.massAction'
]);
形式:
<form id="users-form" role="form" method="POST" action="{{ url('/admin/users/action') }}">
{{ csrf_field() }}
...
</form>
UserController的massAction方法没有得到达到:
public function massAction(Request $request)
{
$userIds = $request->input('users');
$user = new User();
switch ($request->input('mass-action')) {
case 1:
$user->deleteUser($userIds);
$request->session()->flash('message-success', 'User(s) deleted!');
break;
}
return redirect()->back();
}
在表单提交时应该返回一条消息,但它甚至不会到达控制器。在方法内部设置断点确认它没有达到它。
它只是去/ admin/users/action并返回404错误,因为这个页面不存在。它应该转到UserController内部的massAction方法,并重定向到提交表单的页面。
我对产品,属性等做了同样的事情,它工作正常。只有这种路线和方法不起作用。同一个UserController中的其他路由工作。
的问题是在一个的输入字段。不知道为什么它没有抛出任何错误,甚至没有到达控制器。
这
<input class="entity-select" type="checkbox" name="specifications[{{ $user->id }}][id]" value="{{ $user->id }}">
是这样
<input class="entity-select" type="checkbox" name="users[{{ $user->id }}[id]" value="{{ $user->id }}">
变回了错误的输入字段名,现在抛出一个错误,并在UserController的也达到断点后需要。也许一些观点缓存问题?如果那是一件事。
尝试使用route()而不是url()。
更改从url()到route()的动作并检查。
action="{{ route('user.massAction') }}"
仍然返回404错误。 – Rudolph
我认为你需要改变喜欢你的路线:
web.php路线:
Route::post('/admin/users/action','[email protected]')->name('user.massaction');
形式:
<form id="users-form" role="form" method="POST" action="{{ route('user.massaction') }}">
{{ csrf_field() }}
...
</form>
试过,没有工作。正如我所说,我已经有了像我发布的那样的massAction路线,但对于不同的控制器和他们的工作,但这一个不出于某种原因。 – Rudolph
如果您有任何路线组,您可能需要一个'php artisan route:cache' –
我没有任何群组 – Rudolph