使用 Laravel 5.1 在导航栏中显示 userRoleName

Show userRoleName in navbar using Laravel 5.1

我是 MVC 系统的新手。我是 laravel.

的新用户

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

型号:App\Models\User 控制器:App\Http\Controllers\AuthController 查看:template/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

在您的用户模型中创建一个名为 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 函数,并像访问视图中的名称一样访问此属性:

Auth()->user()->user_role

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