Laravel 4:如果帖子不存在,使用控制器重定向页面 - 尝试但到目前为止失败

时间:2013-07-05 07:20:02

标签: php laravel laravel-4

我正在使用Laravel 4,我有一个显示帖子的页面,例如example.com/posts/1显示了db的第一篇文章。

如果有人试图转到不存在的网址,我想要做的是将网页重定向到索引。

e.g。如果没有第6号帖子,那么example.com/posts/6应该重定向到example.com/posts

这就是我所拥有的,它是否正常运转?

public function show($id)
{
        $post = $this->post->findOrFail($id);

        if($post != NULL)
        {
        return View::make('posts.show', compact('post'));
        }
        else
        {
            return Redirect::route('posts.index');
        }
}

有什么想法吗?谢谢:))

2 个答案:

答案 0 :(得分:10)

正如Rob解释的那样,您需要执行以下操作:

位于文件顶部:

use Illuminate\Database\Eloquent\ModelNotFoundException;

然后在你的show($ id)方法中:

try
{
    $post = $this->post->findOrFail($id);

    return View::make('posts.show', compact('post'));
}
catch(ModelNotFoundException $e)
{
    return Redirect::route('posts.index');
}

答案 1 :(得分:1)

如果找不到页面,方法findOrFail()将抛出异常。因此,如果您在其周围包裹try { ... } catch() { ... },则可以返回重定向视图。