Laravel 4 - 使用路径重用控制器和视图

时间:2014-04-17 20:18:49

标签: laravel reusability laravel-routing

我正在使用 Laravel 4 构建一个博客应用程序,该应用程序有两种类型的用户,即管理员和普通用户。

当用户创建帐户或登录时,所有路线都有“user”前缀,如下所示:

获取用户/帖子= PostsController @ index

对于管理员,他们所有的路由都有“admin”前缀,如下所示:

GET admin / users = UsersController @ index

要以管理员身份查看用户的所有帖子,请执行以下操作:

获取admin / users /($ id)/ posts = PostsController @ index

因此,如果常规用户已登录,那么我会从会话中获取 ID ,但如果用户是管理员,那么我会从网址获取常规用户 ID。

我还必须更新视图中的链接,如下所示:

作为普通用户: link_to(“user / posts / create”,“创建帖子”)

作为管理员: link_to(“admin / users / 1 / posts / create”,“创建帖子”)

这有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

是的,所有用户都是用户。

任何要求你成为管理员的东西都应该在路线上有一个过滤器。

例如,如果只允许管理员转到user/posts/delete/{id},那么该路线看起来就像......

Route::post('user/posts/delete/{id}', array('before' => 'adminFilter', 'uses' => 'PostController@deletePost');

我不确定您是如何确定用户是管理员还是普通用户,但您的过滤器看起来像......

Route::filter('adminFilter', function()
{
    if (!Auth::user()->isAdmin())
    {
        return Redirect::to('home')->with('message', 'You aren't an admin!');
    }
});

您只需在isAdmin()模型中添加User函数,该函数描述如何判断用户是否为admin并返回true或false。