簡體   English   中英

無法在 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">

我期望的是它更新我的數據庫。

正如你的表格有

<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() !!} {!! 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::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');

我認為你應該使用資源路線來解決這個問題:

Route::resource('editusers','UserController');
but first you need to run this command
php artisan make:controller UserController --resource

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM