【问题标题】:Show userRoleName in navbar using Laravel 5.1使用 Laravel 5.1 在导航栏中显示 userRoleName
【发布时间】:2015-10-02 17:08:45
【问题描述】:

我是 MVC 系统的新手。我是 laravel 的新用户。

我有一个简单的问题。我阅读了 laravel 文档。但是我不能完全理解 MVC 系统。

模型:应用\模型\用户 控制器:App\Http\Controllers\AuthController 查看:模板/navbar.blade.php

型号

    <?php

namespace App\Models;

use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Foundation\Auth\Access\Authorizable;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;

class User extends Model implements AuthenticatableContract,
    AuthorizableContract,
    CanResetPasswordContract
{
    use Authenticatable, Authorizable, CanResetPassword;

    protected $table = 'users';

    public function userRole(){
        return $this->user_role;
    }
}

控制器

<?php

namespace App\Http\Controllers;

use Auth;
use App\Models\User;
use Illuminate\Http\Request;

class AuthController extends Controller
{
    public function getLogin(){
        return view('auth.login');
    }

    public function postLogin(Request $request){
        $this->validate($request, [
            'mail' => 'required',
            'password' => 'required',
        ]);

        if(!Auth::attempt($request->only(['mail', 'password']))){
            return redirect()->back()->with('form-error', trans('auth.failed'));
        }

            return redirect()->back()->with('info', "giriş yapıldı");
    }

    public function getLogout(){
        Auth::logout();
        return redirect()->back();
    }

    public function getRegister(){

    }

    public function postRegister(){

    }

    public function userRoleName(){

        $userRole = User::userRole();

        switch ($userRole){
            case 9: return "Üst Düzey Yönetici"; break; //superAdmin
            case 8: return "Yönetici"; break;           //admin
            case 7: return "Yardımcı Yönetici"; break;  //moderator
            case 6: return "Muhasebe Bölümü"; break;    //accounting
            case 5: return "Satış Bölümü"; break;       //marketing
            case 4: return "Depo Bölümü"; break;        //storage
            case 3: return "Ürün Yönetimi"; break;      //productManager
        }
    }
}

我想在导航栏中(在视图中)显示 userRoleName

<li><a>{{ Auth::user()->name }}<br/><em>{{ -- CONTROLLER METHOD RESULT HERE --- }}</em></a></li>

我该怎么做?我正在使用 laravel 5.1

【问题讨论】:

  • 对于用户角色使用“Gate”,Laravel ACL,检查这个mattstauffer.co/blog/…
  • 能否请 OP 向我们展示使用的表格,usersrolesUsers可能有manyrolesmanyroles可以在manyusers,一个user可以有一个role,表users可能没有@,roles 表可以与user_role 表相关,具体取决于关系 MN 或 1N。所以请枚举您正在使用的表。 @OP

标签: php laravel acl blade


【解决方案1】:

在您的用户模型中创建一个名为 getUserRoleAttribute 的函数,如下所示:

public function getUserRoleAttribute(){
    switch ($this->user_role){
        case 9: return "Üst Düzey Yönetici"; break; //superAdmin
        case 8: return "Yönetici"; break;           //admin
        case 7: return "Yardımcı Yönetici"; break;  //moderator
        case 6: return "Muhasebe Bölümü"; break;    //accounting
        case 5: return "Satış Bölümü"; break;       //marketing
        case 4: return "Depo Bölümü"; break;        //storage
        case 3: return "Ürün Yönetimi"; break;      //productManager
    }
}

您可以完全删除模型和控制器中的其他 userRole-function,并像访问视图中的名称一样访问此属性:

Auth()->user()->user_role

这称为访问器 (link to Laravel Docs)

【讨论】:

  • 感谢您的回答。但我想学点东西。我不明白什么是控制器,什么是模型。模型用于从数据库中检索数据,控制器用于渲染模型。 getUserRoleAttribute() 不适合模型我是对的还是我不明白这个话题?
猜你喜欢
  • 2018-04-23
  • 1970-01-01
  • 1970-01-01
  • 2020-03-13
  • 1970-01-01
  • 2017-08-23
  • 2016-01-07
  • 1970-01-01
  • 2020-04-25
相关资源
最近更新 更多