解决
web.php route:
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();
}
在表单提交时,它应该返回一条消息,但它甚至无法到达控制器。在方法内设置断点确认它没有到达它。
它只是转到/ admin / users / action并返回404错误,因为此页面不存在。它应该转到UserController中的massAction方法,并被重定向回提交表单的页面。
我正在为产品,属性等做同样的事情,它工作正常。只有这种途径和方法不起作用。同一UserController工作中的其他路由。
答案 0 :(得分:0)
尝试使用route()而不是url()。
将操作从url()更改为route()并将其检出。
action="{{ route('user.massAction') }}"
答案 1 :(得分:0)
我认为你需要改变你的路线,如:
web.php路线:
bool CheckKeyWordsInLine(string line, string[] keywords){
foreach(var key in keywords)
{
if(line.Contains(key))
{
return true;
}
}
return false;
}
<强>形式:强>
Route::post('/admin/users/action','UserController@massAction')->name('user.massaction');
答案 2 :(得分:0)
问题出在其中一个输入字段中。不知道它为什么不抛出任何错误,甚至不会到达控制器。
此
<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中也达到了断点。也许有些视图缓存问题?如果这是一件事。
答案 3 :(得分:0)
像这样在CSRF之后使用表格形式。
@csrf
@if(isset($category))
@method('PUT')
@endif