2015-05-04 67 views
0

我使用表單模型綁定來填充用戶數據的表單。如何在Laravel 5中傳遞(訪問)ID規則中的ID?

{!! Form::model($user, ['route' => ['user_update', $user->id]]) !!} 

完美地工作。當我點擊「提交」時,輸入我的UpdateUserRequest,我根據一些規則驗證我的輸入。在這種情況下,我想保留唯一的電子郵件地址,但當然我們需要爲這個「行」「跳過唯一性」。

我有一個規則

'email' => 'required|unique:users,email,' . 123456, 

和它的作品一樣好時,我會暫時硬編碼此ID(來自用戶的表的主鍵)。

如何訪問此ID內部規則方法? (特別是當我從控制器傳遞$ user_id時)。

  1. 是的,Auth :: user() - > id的作品,但顯然只爲我。我也處理其他用戶的配置文件。
  2. 我可以通過這個用戶的ID作爲隱藏的輸入,並從請求/輸入訪問這個,但我不認爲這是一個很好的解決方案,對吧?
  3. 與網段相同。我可以從網址抓取這個,但也許有更好的方法?

我在規則()方法,我是DD()一堆東西,但沒有任何工作,因爲我期望。

感謝您的任何提示! :)

+0

我不明白你想達到什麼目的:你想在更新用戶檔案時跳過「唯一性」嗎? –

+0

@DamienPirsy,正好。 想象一下,我正在將某人的個人資料更新爲superadmin。例如,我正在更改John Doe的用戶名,但我將他的電子郵件保留原樣。然後我提交一切,Laravel執行驗證。 Laravel抓取輸入電子郵件並將其與數據庫中現有的電子郵件進行比較,在這種情況下毫無意義,因爲我不想觸摸該字段。 如果我離開「必需|唯一」,但我將刪除「用戶,電子郵件,THIS_USERS_ID」我永遠無法從明顯的原因提交表單。希望現在清楚。 – slick

+0

由於用戶標識作爲路由url的一部分傳遞,因此使用該標識是有意義的。這就是爲什麼它首先被傳遞的原因,因爲您需要它來確定您正在使用的確切條目(無論是用於更新,驗證還是您可以找到的任何用途)。 – Bogdan

回答

1

OK,該解決方案是非常非常容易。

$this->user->id 

完全以下規則:

'email' => 'required|unique:users,email,' . $this->user->id, 

就像一個魅力!

2

您可以通過他們的名字與route()->parameter()檢索路徑參數:

$userId = $this->route()->parameter('userId'); // or whatever the name of the parameter is 

或快捷:

$userId = $this->route('userId');