当我在编辑视图中单击“保存”时,我的路由会带回我的编辑视图而不是索引视图,并且永远不会达到我的更新方法。
如果我从方法参数中删除“UsersRequest $ request”,我注意到我达到了更新方法。不知道为什么,如果它有关系,但我需要$ request来进行更新(参见下面的控制器代码):
路线:
Route::get('/users', 'UsersController@index')->name('users.index');
Route::patch('/users/{id}',
[
'as' => 'users.update',
'uses' => 'UsersController@update'
]);
Route::get('/users/{id}/edit', 'UsersController@edit');
控制器:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests\UsersRequest;
//public function update($id, UsersRequest $request)
public function update($id) //- with $request removed, the index view is displayed
{
$user = \Auth::user();
$user->update($request->all());
return view('users.index');
}
修改视图:
{!! Form::model($user, ['method' => 'PATCH', 'action' => [ 'UsersController@update', 'user' => $user->id ] ]) !!}
{!! Form::submit('Save', ['class'=>'btn primary']) !!}
{!! Form::close() !!}
点击保存按钮后的网络
URL Protocol Method Result
/myapp/public/users/1 HTTP POST 302 Goes for the update route
http://000.000.000.000/myapp/public/users/1/edit HTTP POST 200 Redirects to the edit route??
.ENV
APP_URL=http://000.000.000.000/myapp/public
答案 0 :(得分:1)
您的UsersRequest
表单请求中存在任何验证失败。验证失败后,会将您重定向回您的来源,即编辑视图。您的编辑视图应该更新以显示验证错误,以便您的用户知道需要修复哪些字段。
删除UsersRequest $request
参数时它起作用的原因是不再执行验证。