无法在 laravel 中更新用户
Can't update user in laravel
我需要一些代码方面的帮助。
我尝试更新用户数据,但没有更新任何内容。
用户名、电子邮件、Posisson、图片。
请帮忙。
我的路线:
我用了URL因为路由不工作
Route::get('editusers/{id}','UsersController@update');
我的控制器:
public function edit($id)
{
$editusers=User::findOrFail($id);
return view('admin.users.EditUser', compact('editusers'));
}
public function update(Request $request, $id)
{
$this->validate($request, [
'name' => 'required',
'email' => 'required',
'posission' => 'required',
]);
$useredit = User::find($id);
$useredit->name = $request->input('name');
$useredit->email = $request->input('email');
$useredit->posission = $request->input('posission');
if($request->hasFile('file'))
{
$file = $request->file('file');
$filename = time().'.'.$file->getClientOriginalExtension();
Image::make($file)->resize(150, 150)->save(public_path('/admin/images/'.$filename));
$useredit->UserImg = $filename;
}
$useredit->save();
return redirect()->back();
}
HTML :
<form class="" action="{{url('editusers',Auth::user()->id)}}" role="form" enctype="multipart/form-data">
{!! csrf_field() !!}
<input type="hidden" name="_method" value="PUT">
<label>Edit Your Profile :</label>
<div class="form-group">
<label>Name :</label>
<input class="form-control" value="{{$editusers->name}}" name="Name">
</div>
<div class="form-group">
<label>Email :</label>
<input class="form-control" value="{{$editusers->email}}" name="email">
</div>
<div class="form-group">
<label>Posisson :</label>
<input class="form-control" value="{{$editusers->posission}}" name="posission">
</div>
<div class="form-group">
<label>Image :</label>
<img src="{{ asset('admin') }}/images/{{$editusers->UserImg}}" alt="avatar" class="img-circle" style="max-height: 100px;">
<input type="file" id="file" name="file"/>
</div>
<input class="btn btn-success btn-mini deleteRecord" type="submit" name="submit" value="Update">
我期望它会更新我的数据库。
你的路线有误
Route::get('editusers/{id}','UsersController@update');
应该是PUT
Route::put('editusers/{id}','UsersController@update');
这个问题是因为你在你的路线上放错了方法。改变它
// From
Route::get('editusers/{id}', 'UsersController@update')
// To
Route::put('editusers/{id}', 'UsersController@update')
无论如何,你应该把你的路线改成标准路线。应该是:
//To show data you should use:
Route::get('users/edit/{id}', 'UsersController@show');
//To update user data.
Route::put('users/edit', 'UsersController@update');
因为你的表格有
<form class="" action="{{url('editusers',Auth::user()->id)}}" role="form" enctype="multipart/form-data" method="POST">
{!! csrf_field() !!}
<input type="hidden" name="_method" value="PUT">
所以你的路由必须有 put(),
so it should be Route::put('editusers/{id}','UsersController@update');
您也可以使用 @method('PUT')
代替 <input type="hidden" name="_method" value="PUT">
和 @csrf
代替 {!! csrf_field() !!}
将 $useredit->name = $request->input('name');
更改为 $useredit->name = $request->input('Name');
或
<input class="form-control" value="{{$editusers->name}}" name="Name">
至
<input class="form-control" value="{{$editusers->name}}" name="name">
我认为你应该使用资源路由来解决这个问题:
Route::resource('editusers','UserController');
but first you need to run this command
php artisan make:controller UserController --resource
我需要一些代码方面的帮助。
我尝试更新用户数据,但没有更新任何内容。
用户名、电子邮件、Posisson、图片。
请帮忙。
我的路线: 我用了URL因为路由不工作
Route::get('editusers/{id}','UsersController@update');
我的控制器:
public function edit($id)
{
$editusers=User::findOrFail($id);
return view('admin.users.EditUser', compact('editusers'));
}
public function update(Request $request, $id)
{
$this->validate($request, [
'name' => 'required',
'email' => 'required',
'posission' => 'required',
]);
$useredit = User::find($id);
$useredit->name = $request->input('name');
$useredit->email = $request->input('email');
$useredit->posission = $request->input('posission');
if($request->hasFile('file'))
{
$file = $request->file('file');
$filename = time().'.'.$file->getClientOriginalExtension();
Image::make($file)->resize(150, 150)->save(public_path('/admin/images/'.$filename));
$useredit->UserImg = $filename;
}
$useredit->save();
return redirect()->back();
}
HTML :
<form class="" action="{{url('editusers',Auth::user()->id)}}" role="form" enctype="multipart/form-data">
{!! csrf_field() !!}
<input type="hidden" name="_method" value="PUT">
<label>Edit Your Profile :</label>
<div class="form-group">
<label>Name :</label>
<input class="form-control" value="{{$editusers->name}}" name="Name">
</div>
<div class="form-group">
<label>Email :</label>
<input class="form-control" value="{{$editusers->email}}" name="email">
</div>
<div class="form-group">
<label>Posisson :</label>
<input class="form-control" value="{{$editusers->posission}}" name="posission">
</div>
<div class="form-group">
<label>Image :</label>
<img src="{{ asset('admin') }}/images/{{$editusers->UserImg}}" alt="avatar" class="img-circle" style="max-height: 100px;">
<input type="file" id="file" name="file"/>
</div>
<input class="btn btn-success btn-mini deleteRecord" type="submit" name="submit" value="Update">
我期望它会更新我的数据库。
你的路线有误
Route::get('editusers/{id}','UsersController@update');
应该是PUT
Route::put('editusers/{id}','UsersController@update');
这个问题是因为你在你的路线上放错了方法。改变它
// From
Route::get('editusers/{id}', 'UsersController@update')
// To
Route::put('editusers/{id}', 'UsersController@update')
无论如何,你应该把你的路线改成标准路线。应该是:
//To show data you should use:
Route::get('users/edit/{id}', 'UsersController@show');
//To update user data.
Route::put('users/edit', 'UsersController@update');
因为你的表格有
<form class="" action="{{url('editusers',Auth::user()->id)}}" role="form" enctype="multipart/form-data" method="POST">
{!! csrf_field() !!}
<input type="hidden" name="_method" value="PUT">
所以你的路由必须有 put(),
so it should be Route::put('editusers/{id}','UsersController@update');
您也可以使用 @method('PUT')
代替 <input type="hidden" name="_method" value="PUT">
和 @csrf
代替 {!! csrf_field() !!}
将 $useredit->name = $request->input('name');
更改为 $useredit->name = $request->input('Name');
或
<input class="form-control" value="{{$editusers->name}}" name="Name">
至
<input class="form-control" value="{{$editusers->name}}" name="name">
我认为你应该使用资源路由来解决这个问题:
Route::resource('editusers','UserController');
but first you need to run this command
php artisan make:controller UserController --resource