Php Laravel 5:重定向“;blog/{id}";至;blog/{slug}";-试图获取非对象错误的属性
我试图将进入blog/{id}的用户重定向到blog/{slug},slug是他们输入的id的slug 我正在做的是不工作。我添加了{$article->slug}并获得了正确的字符串,但是当我尝试重定向时,我得到了“尝试获取非对象的属性”错误 我正在使用路由/模型绑定。这是我的RouteServiceProvider:Php Laravel 5:重定向“;blog/{id}";至;blog/{slug}";-试图获取非对象错误的属性,php,laravel,laravel-5,Php,Laravel,Laravel 5,我试图将进入blog/{id}的用户重定向到blog/{slug},slug是他们输入的id的slug 我正在做的是不工作。我添加了{$article->slug}并获得了正确的字符串,但是当我尝试重定向时,我得到了“尝试获取非对象的属性”错误 我正在使用路由/模型绑定。这是我的RouteServiceProvider: $router->bind('blog', function($slug) { if ($slug) { if(i
$router->bind('blog', function($slug)
{
if ($slug) {
if(is_numeric($slug)) {
$article = Article::findOrFail($slug);
return redirect('blog/' . $article->slug);
}
return Article::with('images')->where('slug', $slug)->first();
}
});
这是我在控制器中的显示方法:
public function show(Article $article)
{
return view('blog.show', compact('article'));
}
任何想法都将不胜感激
项目迁移文件:
您的控制器需要文章的实例。因此,如果您从闭包返回重定向响应,它将不起作用 目前,我只能想出两种方法来实现路由模型绑定的目的
public function show($article)
{
if ($article instanceof \Illuminate\Http\RedirectResponse)
{
return $article;
}
return view('blog.show', compact('article'));
}
由于此问题与您的文章表架构相关,您能否使用文章表的信息更新您的问题?那会更容易理解。。。文章迁移丢失,且不在回收站中。呵呵。。。?这可能就是我出错的原因。太棒了!是的,这对于这么简单的逻辑来说太复杂了。我希望将来路由模型绑定不会像这样阻碍我,只是想让我的控制器更干净一点。如果是这样的话,我就从现在开始在控制器中写东西。谢谢
public function show($article)
{
if ($article instanceof \Illuminate\Http\RedirectResponse)
{
return $article;
}
return view('blog.show', compact('article'));
}