2016-11-14 5 views
1

gibt es eine Möglichkeit, Laravel 5 Ressource URLs anpassen?Änderung Laravel Ressource URL

Ändern Sie beispielsweise user/1/edit in user/edit.

Das ist, weil ich nicht möchte, dass jemand die ID in der URL sehen. Ich denke, es ist Datenbankinformationen und sollte nicht aufgedeckt werden.

Der Punkt ist, dass ich dies tun möchte, ohne meine Routen zu ändern. Auf der anderen Seite möchte ich dies tun, indem ich Ressourcenrouten nutze und nicht, indem ich ihnen neue Routen hinzufüge. Wie Sie wissen, wenn Sie eine Ressourcenroute in Ihrem Projekt definieren, fügt sie der Routentabelle automatisch einige vordefinierte Routen hinzu gezwungen, sie so zu benutzen, wie sie sind. Zum Beispiel müssen Sie eine GET-Anfrage an den Benutzer/{user} senden, um den Benutzer anzuzeigen. Jetzt möchte ich eine URL wie user/{username} haben, um dies zu tun, ohne eine neue Route hinzuzufügen, IST DAS NOCH MÖGLICH?

Wenn es einen Weg gibt, dies zu erreichen, schätze ich es, wenn Sie es hier teilen.

Vielen Dank

Antwort

1

Da in den meisten Fällen id ein Auto erhöhten Wert und erahnbar ist besser können Sie jede andere Spalte users Tabelle verwenden hier, zB Benutzername und dann diese Spalte statt id in Ressourcen-Controller verwenden . Angenommen, Sie haben eine einzigartige username Spalte in der Tabelle Also, wenn Sie, dass Ihr Anruf bearbeiten, um Benutzer statt id verwenden wie:

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

, die zum Beispiel auf

user/shahrokhi/edit 

Jetzt entsprechen , in Ihrem Ressourcen-Controller zum Bearbeiten eines Benutzers Details Code kann wie sein:

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

} 

Und so weiter für andere Methoden.

+0

können Sie mir bitte sagen, wie das geht? 'Verwenden Sie eine andere einzigartige Spalte anstelle von ID' –

+0

Vielen Dank, aber ich habe gerade festgestellt, dass ich vergessen hatte, einen wichtigen Punkt in meinem Problem zu erwähnen. Ich habe meinen Beitrag editiert und jetzt sagt es ganz was ich erreichen möchte. Es wäre wirklich nett von dir, wenn du es dir nochmal anschaust! –

+0

Ich überprüfte. Ihre Ressourcenrouten sind die gleichen wie zuvor. Auf Ihren Routen gibt es nichts zu ändern. Sie müssen nur "Benutzername" anstelle von "ID" in Controller-Methoden verwenden. Das ist alles. –