2017-04-07 50 views
1

我有一個管理員,他可以創建和更新用戶。我做了一個名爲「UserUpdateRequest」的新的Form請求。我如何傳遞用戶ID以便它可以更新用戶詳細信息?這裏是我的規則:在Laravel表單請求中傳遞參數

// UserUpdateRequest 
public function rules() 
    { 
     return [ 
      'firstname' => 'required|min:2|max:255', 
      'lastname' => 'required|min:2|max:255', 
      'username' => 'required|max:255', 
      'password' => 'required|min:6|confirmed', 
      'email' => 'required|email|max:255|unique:users,email,????', 
      'contact' => 'required|integer', 
      'gender' => 'required|in:m,f', 
      'role_id' => 'required|exists:roles,id', 
     ]; 
    } 

// Controller 
public function update(UserUpdateRequest $request, User $user) 
    { 
     $user->update([ 
      'firstname' => request('firstname'), 
      'lastname' => request('lastname'), 
      'username' => request('username'), 
      'email' => request('email'), 
      'contact' => request('contact'), 
      'gender' => request('gender'), 
      'role_id' => request('role_id'), 
     ]); 

     session()->flash('message', 'User has been successfully added.'); 

     return redirect('/users/' . $user->id); 
    } 

'required|email|max:255|unique:users,email,????',是我很困惑。

+0

檢查此。它會幫助[https://laracasts.com/discuss/channels/requests/laravel-5-validation-request-how-to-handle-validation-on-update](https://laracasts.com/discuss/channels/requests/laravel-5-validation-request-how-to-handle-validation-on-update) –

回答

2

由於管理員正在改變用戶,我假設你已經在你的視圖文件中有用戶數據。

您可以在窗體上傳遞隱藏的輸入。

<input type="hidden" value="{{$user->id}}" name="user_id" /> 

然後在控制器上接收它。

$user_id = $request->input('user_id'); 
$user = \App\User::find($user_id); 
//validation comes here 

編輯根據新的信息

public function update(UserUpdateRequest $request, User $user) 

應該

public function update(Request $request, User $user) 

,你必須打電話給你的控制器上的請求;

use Illuminate\Http\Request; 

後,你可以得到您的要求

dd($request->all()); 

,但如果你用的是特殊的請求,發佈您的UserUpdateRequest類。

+0

我的問題是如何將參數傳遞給表單請求以便我查詢即將到達的'user_id'編輯 –

+0

$ user = User :: find($ id); return('yourview') - > with('user',$ user);但在這種情況下,你會問我如何獲得目前的觀點哈哈ID。您需要了解如何將數據傳遞到視圖並從視圖中接收特殊數據。檢查Laravel響應和路由文件其寫得很好 –

+0

這是我做的: –

1

傳遞的userid中隱藏的輸入字段,並在獨特的驗證使用像

unique:users,email,userId 
+0

如何在表單請求中傳遞用戶ID? –

+0

作爲表單元素 id}}」name =「userId」/> –

+0

如果您正在編輯用戶,那麼您必須擁有編輯用戶的ID,只是在表單中傳遞相同的東西。 –

2

這裏就是我所做的:

查看:

<input type="hidden" value="{{ $user->id }}" name="user_id"> 

控制器:

public function rules() 
    { 
     $id = $this->request->get('user_id'); 

    return [ 
     'firstname' => 'required|min:2|max:255', 
     'lastname' => 'required|min:2|max:255', 
     'username' => 'required|max:255', 
     'email' => 'required|email|max:255|unique:users,email,'.$id, 
     'contact' => 'required|integer', 
     'gender' => 'required|in:m,f', 
     'role_id' => 'required|exists:roles,id', 
    ]; 
}