我有文章模型和文章表在數據庫中。每篇文章都可以使用Laravel的標準URI結構顯示:www.example.com/articles/5
(其中5
是文章id
)。每篇文章都有一個塞場(塞在文章表列),所以用路線模型綁定我用的slug
代替id
:Laravel路徑模型綁定(slug)僅適用於show方法?
RouteServiceProvider.php:
public function boot(Router $router)
{
parent::boot($router);
\Route::bind('articles', function($slug) {
return \App\Article::where('slug', $slug)->firstOrFail();
});
}
在routes.php中我有:
Route::resource('articles', 'ArticleController');
現在的文章可以通過以下URL訪問:www.example.com/some_slug
。
但是現在,當我想編輯的一些文章中,我得到以下錯誤:
沒有找到模型查詢結果[應用程序\文章。
例如,當我嘗試打開以下內容:www.example.com/some_slug/edit
- 我收到該錯誤。
因此,方法ArticleController @ show(Article $ article)工作正常,但ArticleController @ edit(Article $ article)不起作用。
這裏是我的路線清單:
,這裏是顯示從ArticleController和編輯方法:
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'));
}
你缺少你'edit'參數結束了's'。爲了匹配'/ articles/{articles}'應該編輯(Article $ article)'不'編輯(Article $ article)'' –