Laravel没有达到更新方法并再次返回编辑视图 - 路由错误

时间:2018-01-04 20:25:12

标签: laravel laravel-5

当我在编辑视图中单击“保存”时,我的路由会带回我的编辑视图而不是索引视图,并且永远不会达到我的更新方法。

如果我从方法参数中删除“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

1 个答案:

答案 0 :(得分:1)

您的UsersRequest表单请求中存在任何验证失败。验证失败后,会将您重定向回您的来源,即编辑视图。您的编辑视图应该更新以显示验证错误,以便您的用户知道需要修复哪些字段。

删除UsersRequest $request参数时它起作用的原因是不再执行验证。