首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查页面中的用户角色

检查页面中的用户角色
EN

Stack Overflow用户
提问于 2015-10-23 14:58:19
回答 1查看 178关注 0票数 3

我有父User类,其实例在对用户进行身份验证时返回。该User实例具有指示用户角色的role_id。在系统中有三个角色:标准用户、教练和健身房(数据库中每个表都不同),每个角色都有不同的功能和特权。

有一些可能性,我可以做;

1)可以在User的模型类中编写角色检查;

代码语言:javascript
运行
复制
public function getName()
{
    if($user->role == 0)
    {
        $user->standarduser()->name;
    }
    else if($user->role == 1)
    {
        $user->gym()->name;
    }
}

public function getGymUsers()
{
    if($user->role == 2)
    {
        $user->gym()->users;
    }
    else
    {
        return null;
    }
}

( 2)我可以为每个角色类编写函数,但考虑到(或控制器),我必须这样做;

代码语言:javascript
运行
复制
if($user->isStandarduser())
{
    echo $user->standarduser()->name;
}
. . .

if($user->isGym())
{
    echo $user->gym()->users;
}
else
{
    echo "";
}

3)为每个模型提供具体的视图,这样就不需要检查角色。例如,如果我在健身房的页面上,我不检查这个对象是否是健身房的对象,因为我知道它是健身房的页面。

我无法决定走哪条路。如果有更好的设计,我也可以尝试。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-23 22:56:00

如果健身房和用户的视图非常相似,并且您使用的是由laravel提供的刀片引擎,那么您可以使用刀片的模板系统

http://laravel.com/docs/5.1/blade

/resources/layouts/default.blade.php

代码语言:javascript
运行
复制
<body>
    <h1>@yield('name')</h1>
    <div>@yield('content')</div>
    <p>stuff that is the same for all users</p>
</body>

/resources/gym.blade.php

代码语言:javascript
运行
复制
@extends('layouts.default')

@section('name',$user->gym()->name)

@section('content')
<p>This is content unique to the gym</p>
@endsection

/resources/standarduser.blade.php

代码语言:javascript
运行
复制
@extends('layouts.default')

@section('name',$user->standarduser()->name)

@section('content')
<p>This is content unique to a standard user</p>
@endsection

控制器

代码语言:javascript
运行
复制
public function show($id){
    $user = User::where($id)->first();
    if($user->isGym())
        return view('gym', ['user' => $user]);
    else if($user->isStandardUser())
        return view('standarduser', ['user' => $user]);
    else
        abort(500,'Not implemented yet');
}

因为每个视图都在扩展默认布局,所以您将能够在为每种类型的用户提供唯一组件的同时拥有共享组件。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33305483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档