私はの商品モデルとの商品テーブルをデータベースに持っています。各記事は、Laravelの標準URI構造www.example.com/articles/5
(5
はid
です)を使用して表示できます。Laravelルートモデルバインディング(slug)はshowメソッドでのみ機能しますか?
RouteServiceProvider.php:各記事には、ルートモデルバインディングと私はslug
代わりid
の使用ので、スラグフィールド(スラグ記事テーブルの列)を持っている
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');
などの記事には、www.example.com/some_slug
のようなURLでアクセスできます。
モデルなしクエリ結果を[アプリケーション\条]:私はいくつかの記事を編集したいとき
はしかし、今、私は次のエラーを取得します。
たとえば、次のように開いてみると、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}'にマッチさせるため 'edit(Article $ article)'を編集しないでください –