【发布时间】:2016-10-25 19:26:17
【问题描述】:
我在数据库中有 Article 模型和 articles 表。每篇文章都可以使用 Laravel 的标准 URI 结构显示:www.example.com/articles/5(其中5 是文章id)。每篇文章都有一个 slug 字段(文章表中的slug 列),因此对于 Route Model Binding,我使用 slug 而不是 @987654327 @:
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。
但是现在,当我想编辑一些文章时,我收到以下错误:
没有模型 [App\Article] 的查询结果。
例如,当我尝试打开以下内容时:www.example.com/some_slug/edit - 我收到该错误。
所以,方法 ArticleController@show(Article $article) 工作正常,但 ArticleController@edit(Article $article) 不起作用。
这是我的路线列表:
这里是来自 ArticleController 的 show 和编辑方法:
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。应该是edit(Article $articles)而不是edit(Article $article)以匹配/articles/{articles}
标签: php laravel routes laravel-5.2 slug