用户更新错误没有针对模型身份验证/用户laravel 5

时间:2015-08-06 05:12:39

标签: php laravel laravel-5

在更新用户详细信息时出现错误..请告诉我。我正在使用laravel版本5

错误

ModelNotFoundException in Builder.php line 125: No query results for model [App\User].

我使用auth / userController.php的控制器文件。

public function edit($id)
    {
        $User =  User::findOrFail($id);
//    return $User->username;
        return view('auth.editUser')->withUser($User);
    }


    /**
     * Update the specified resource in storage.
     *
     * @param  int $id
     * @return Response
     */
    public function update($id, Request $request)
    {
        $User = User::findOrFail($id);

        $this->validate($request, [
            'username' => 'required',
            'full_name' => 'required'
        ]);

        $input = $request->all();

        $User->fill($input)->save();

        Session::flash('flash_message', 'Task successfully added!');

        return redirect()->back();
    }

以下是我的路线

Route:: get('user-edit/{id}', 'Admin\UserController@edit');
Route:: post('user-edit/{id}', 'Admin\UserController@update');

下面是我的视图

的edit.blade.php文件
<form class="form-horizontal" role="form" method="POST" action="{{ action('Admin\UserController@update') }}">
    <input type="hidden" name="_token" value="{{ csrf_token() }}">

    <div class="form-group">
        <label class="col-md-4 control-label">Full Name</label>
        <div class="col-md-6">
            <input  type="text" class="form-control" name="full_name" value="{{ $user->full_name }}">
        </div>
    </div>

    <div class="form-group">
        <label class="col-md-4 control-label">Username</label>
        <div class="col-md-6">
            <input  type="text" class="form-control" name="username" value="{{ $user->username }}">
        </div>
    </div>

    <div class="form-group">
        <label class="col-md-4 control-label">Password</label>
        <div class="col-md-6">
            <input  type="password" class="form-control" name="password" value="{{ $user->password }}">
        </div>
    </div>



    <div class="form-group">
        <div class="col-md-6 col-md-offset-4">
            <button type="submit" class="btn btn-primary">
                Register
            </button>
        </div>
    </div>

</form>

2 个答案:

答案 0 :(得分:1)

错误来自您的findOrFail()电话。它找不到具有您正在寻找的ID的用户。

这可能是由于update方法中参数的顺序造成的。在控制器方法中,路径参数应该在注入的参数之后。 documentation状态&#34;如果您的控制器方法也期望从路由参数输入,只需在您的其他依赖项之后列出您的路由参数。&#34;尝试将更新方法更改为:

public function update(Request $request, $id) {
    //
}

修改

您的POST路由需要用户的id作为路由参数,但在生成<form>的URL时您尚未提供此参数。 action()函数的第二个参数采用一组值作为路由参数。您的表单声明应如下所示:

<form class="form-horizontal" role="form" method="POST" action="{{ action('Admin\UserController@update', ['id' => $user->id]) }}">

可以找到action()辅助函数的文档here

答案 1 :(得分:1)

只需将用户ID传递给您的表单,如下所示:

<form class="form-horizontal" role="form" method="POST" action="{{action('Admin\UserController@update', $user->id) }}">

您也可以使用表单构建器,并按照以下方式执行:

{!! Form::open(['method' => 'POST', 'action' => ['UserController@update', $user->id], 'class' => 'form-horizontal']) !!}

如果整个行动部分令人困惑,你可以用另一种方式做到:

<form class="form-horizontal" role="form" method="POST" action="{{url('user-edit/'.$user->id) }}">