2017-05-08 8 views
-1

ich diese Strecke in meiner Route dir web.php definiert tun haben, als u-Controller sehen kann eine Wild Card erwartet via URL, übergeben werdenRouten Modell Bindung Laravel

Route::get('/FeaturedPosts/{post}', '[email protected]'); 

Während an der Controller-Datei: Ich habe die Indexmethode, die sich mit der Anfrage beschäftigt;

public function show (Post $post){ 

return $post; 
} 

meine Frage ist, warum die Wildcard-Name derselbe wie der Variablennamen auf die Funktion in der Steuerung sein muss? Was ist die logische Erklärung dafür?

Antwort

2

Mit einer Variablen es egal wäre, wie es genannt wird, aber was ist das:

/question/{question}/answer/{answer} 

Sie diese mit

public function show(Question $question, Answer $answer) 

oder

public function show(Answer $answer, Question $question) 

Laravel nennen kann, ist Mit dynamischer Injektion ist es egal, wo Sie Ihre Variable platzieren, aber sie muss einen eindeutigen Namen haben ify es.

+0

eigentlich wäre es wichtig; wenn der var name nicht der selbe ist, bekomme ich eine leere json-datei; Wenn der Platzhalter den gleichen Namen wie Route Modellbindung var hat, erhalte ich Daten über meine JSON-Datei. Deshalb frage ich die logische Erklärung dahinter, warum sie denselben Namen haben müssen. –

+0

Sie können einen anderen Namen verwenden, aber Sie müssen ihn dann im 'routeServiceprovider' definieren. Z.B. Sie möchten etwas wie '/ user/tom' anstelle von'/user/1', dann müssen Sie eine neue Bindung machen. – mimo