更新用户信息时出现错误。请给我一些建议。我用的是laravel版本5
误差ModelNotFoundException in Builder.php line 125: No query results for model [AppUser].
我使用的控制器文件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}', 'AdminUserController@edit');
Route:: post('user-edit/{id}', 'AdminUserController@update');
下面是我的edit.blade.php文件的视图
<form class="form-horizontal" role="form" method="POST" action="{{ action('AdminUserController@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>
就像这样传递一个用户id给你的表单:
<form class="form-horizontal" role="form" method="POST" action="{{action('AdminUserController@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) }}">
错误来自您的findOrFail()
调用。它没有找到具有您正在寻找的id的用户。
这可能是由于您的update
方法中参数的顺序。在控制器方法中,路由参数应在注入参数之后。文档中写道:"如果你的控制器方法也需要路由参数的输入,只需在其他依赖项后面列出你的路由参数。"尝试将更新方法更改为:
public function update(Request $request, $id) {
//
}
编辑
您的POST路由需要用户的id作为路由参数,但是您在为<form>
生成URL时没有提供此参数。action()
函数的第二个参数采用一组值作为路由参数。您的表单语句应该看起来像:
<form class="form-horizontal" role="form" method="POST" action="{{ action('AdminUserController@update', ['id' => $user->id]) }}">
action()
帮助函数的文档可以在这里找到。