2016-11-14 14 views
1

Laravel 5のリソースURLをカスタマイズする方法はありますか?laravel resource urlを変更する

たとえば、user/1/editからuser/editに変更します。

これは、URLに誰かがIDを見ることを望まないためです。私はそれがデータベース情報だと思います。明らかにすべきではありません。

ポイントはです。ルートを変更せずにこれをやりたいのですが。他の手では、私が持っているリソースルートを使ってこれをやりたいのですが、プロジェクトにリソースルートを定義すると、事前に定義されたルートがルートテーブルに自動的に追加されます。それを彼らのように使うことを余儀なくされました。たとえば、ユーザーを表示するために、ユーザー/ {user}にGET要求を送信する必要があります。今は新しいルートを追加せずにこれを行うためのuser/{username}のようなURLを持っていたいと思います。

これを実現する方法がある場合は、ここで分かればそれを感謝します。

どうもありがとう

答えて

1

ほとんどの場合idに自動インクリメント値と推測可能なので、より良いあなたはここでusersテーブル、例えば、ユーザ名のいずれかの他の一意の列を使用して、リソースコントローラにidするのではなく、その列を使用することができます。あなたはだからあなたのテーブル内で一意username列をしたと仮定し、あなたの代わりにIDのユーザー編集へお電話でのようになることを使用する場合:たとえば今

user/shahrokhi/edit 

と同等です

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

あなたのリソースコントローラで、ユーザーの詳細コードを編集する場合は、次のようになります。

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

} 

その他の方法についても同様です。

+0

どうすればいいですか? 'idの代わりに別の一意の列を使用する ' –

+0

ありがとう、しかし私はちょうど私の問題の1つの重要な点について言及するのを忘れていたことに気づいた。私は自分の投稿を編集し、今は完全に私が達成したいと言っています。それをもう一度見てみると、本当にいいですね! –

+0

を確認しました。あなたのリソースルートは以前と同じになります。あなたのルートを変更するものはありません。コントローラメソッドで 'id'の代わりに' username'を使うだけです。それで全部です。 –

関連する問題