2016-03-26 11 views
2

Ich benutze Laravel 5.2 jetzt. ich habe diese Codes in meiner routes.php Datei:Laravel5 generieren Routen Schlüssel

Route::(['dashboard'=>'DashboardArticelController',]); 

und Laravel erzeugt einige Router für meine App:

GET/Armaturenbrett/my-Artikel App \ Http \ Controllers \ DashboardArticelController @ getMyArticles

hier ein Verfahren, in meinem Controller ist:

public function getMyArticles() 
{ 
    //$articels = Auth::user()->articals()->latest('published_at')->get(); 
    //dd(Auth::user()->articals()->latest('published_at')->simplePaginate(3)); 
    $articels = Auth::user()->articals()->latest('published_at')->Paginate(5);  
    return view('dashboard.view.dashboardArticelEdit',compact('articels')); 
} 

ich frage mich, wie die laravel5 diese Route erzeugt, kann ich nicht das Verfahren ge gefunden niert die Route mit dem Methodennamen.

Antwort

0

Standardmäßig geht Laravel davon aus, dass ein Eloquent-Modell URL-Segmenten anhand seiner ID-Spalte zugeordnet werden sollte. Aber was, wenn Sie erwarten, dass es immer zu einer Schnecke passt?

Eloquent implementiert den Illuminate \ Contracts \ Routing \ UrlRoutable-Vertrag, was bedeutet, dass jedes Eloquent-Objekt eine getRouteKeyName() -Methode hat, die definiert, welche Spalte verwendet werden soll, um von einer URL aus zu suchen. Standardmäßig ist diese auf id gesetzt, aber Sie können das auf jedem Eloquent Modell außer Kraft setzen:

class Test extends Model 
{ 
    public function getRouteKeyName() 
    { 
     return 'slug'; 
    } 
} 
+0

thanks.but ich fand es eine Methode ist ‚boot‘ in Klasse RouteServiceProvider, als ich dieses Statement hinzuzufügen: $ Router-> Modell ("Eins", "App \ Artikel"); In diese Methode.i bekomme ich das Modellobjekt App \ Articles zu meiner Methode 'public function getMyArticles ($ Articles)', aber die Methode 'Route :: ([' dashboard '=>' DashboardArticelController ',]))' generiert einige routen wie: GET/dashboard/my-articles/{eins?}/{tow?}/... wie kann ich den key {one?} in {articles?} ändern, da ich mit Route andere Routen generieren möchte :: controllers ([]). Beide erzeugen die Routen mit 'path/{one?}/{two?}/...' – vaxilicaihouxian

+0

Sie müssen das implizite Routenmodell binden Siehe diesen Artikel https://mattstauffer.co/ Blog/implizites-Modell-Bindung-in-Laravel-5-2. Sie werden eine bessere Idee bekommen. –

Verwandte Themen