在更新用户详细信息时出现错误..请告诉我。我正在使用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>
答案 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) }}">