2016-11-14 127 views
1

有沒有辦法自定義Laravel 5資源網址?例如,將user/1/edit更改爲user/edit更改laravel資源網址

這是因爲我不想讓任何人看到URL中的id。我認爲這是數據庫信息,不應該透露。

點是,我想這樣做,而不改變我的路線。另一方面,我想通過使用我擁有的資源路由來完成此操作,而不是通過向它們添加一些新路由來完成此操作,正如您在項目中定義資源路由時所瞭解的那樣,它會自動將一些預定義路由添加到路由表中,被迫以他們的方式使用它們。例如,您必須向用戶/ {user}發送GET請求以顯示用戶。現在我想要一個像用戶/ {用戶名}這樣的網址,而無需添加新路線,這是甚麼可能的?

如果有辦法實現這一點,我很欣賞它,如果你在這裏分享它。

非常感謝

回答

1

因爲在大多數情況下id是一個自動遞增值和猜測的,你可以更好的使用users表在這裏,例如,用戶名中的任何其他唯一列,然後在資源控制器使用該列,而不是id 。假設您在表中所獨特username列,因此,如果您使用的,而不是你的ID用戶編輯電話會像:

{!! route('user.edit', $user->username) !!} // let's say username is shahrokhi 

這相當於

user/shahrokhi/edit 

現在例如,在你的資源控制器中編輯用戶的詳細代碼可能是這樣的:

public function edit($username) 
{ 
    $user = User::where('username', '=', $username)->firstOrFail(); 
    // rest of your code goes here 

} 

等等其他方法。

+0

請問能告訴我該怎麼做? '使用另一個獨特的列而不是id' –

+0

非常感謝,但我只是意識到我忘記提及我的問題中的一個重要問題。我編輯了我的帖子,現在它完全說明了我想實現的目標。如果再看一遍,這將是非常好的! –

+0

我查過了。您的資源路線將與以前一樣。沒有什麼可以改變你的路線。你只需要在控制器方法中使用'username'而不是'id'。就這樣。 –