Ich habe Artikel Modell und Artikel Tabelle in der Datenbank. Jeder Artikel kann unter Verwendung der Standard-URI-Struktur von Laravel gezeigt werden: www.example.com/articles/5
(wobei 5
der Artikel id
ist). Jeder Artikel hat eine Slug Feld (Slug Spalt in der Artikel-Tabelle), so mit Strecke Modell Bindung Ich benutze slug
statt id
:Laravel Route Modellbindung (Slug) funktioniert nur für show-Methode?
RouteServiceProvider.php:
public function boot(Router $router)
{
parent::boot($router);
\Route::bind('articles', function($slug) {
return \App\Article::where('slug', $slug)->firstOrFail();
});
}
In routes.php habe ich:
Route::resource('articles', 'ArticleController');
und jetzt können Artikel mit URLs wie folgt aufgerufen werden: www.example.com/some_slug
.
Aber jetzt, wenn ich einige Artikel bearbeiten möchten, bekomme ich folgende Fehlermeldung:
keine Abfrageergebnisse für das Modell [App \ Artikel].
Zum Beispiel, wenn ich versuche, Folgendes zu öffnen: www.example.com/some_slug/edit
- ich bekomme diesen Fehler.
Also, Methode ArticleController @ Show (Artikel $ Artikel) funktioniert gut, aber ArticleController @ bearbeiten (Artikel $ Artikel) funktioniert nicht.
Hier ist meine Routenliste:
und hier sind zeigen und Bearbeiten von Methoden von Article:
public function show(Article $article) // THIS WORKS FINE
{
$tags = $article->tags()->get();
return view('articles.show', compact('article', 'tags'));
}
public function edit(Article $article) // DOESN'T WORK -> When I open article/slug/edit I get error: No query results for model [App\Article].
{
$tags = Tag::lists('name', 'id');
$categories = Category::orderBy('lft', 'asc')->get()->lists('padded_name', 'id');
return view('articles.edit', compact('article', 'tags', 'categories'));
}
Sie das 'S' am Ende des 'edit' Parameter sind vermisst. Sollte 'edit (Artikel $ articles)' nicht 'edit (Artikel $ article)' sein, um '/ articles/{articles}' zu entsprechen –