已解决
web.php 路由:
Route::post('/admin/users/action', [
'uses' => 'UserController@massAction',
'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();
}
在表单提交时,它应该返回一条消息,但它甚至没有到达 Controller 。在方法内设置断点可确认它未到达该方法。
它只是转到/admin/users/action 并返回 404 错误,因为该页面不存在。它应该转到 UserController 内的 MassAction 方法并重定向回提交表单的页面。
我正在对产品、属性等做同样的事情,效果很好。只是这个路线和方法行不通。同一 UserController 中的其他路由可以工作。
最佳答案
尝试使用route()而不是url()。
将操作从 url() 更改为 route() 并检查一下。
action="{{ route('user.massAction') }}"
关于Laravel:路由在表单提交时返回 404 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43867596/