Laravel:Route在表单提交

时间:2017-05-09 10:40:04

标签: laravel controller routes laravel-5.3

解决

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工作中的其他路由。

4 个答案:

答案 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

相关问题