dongxi7704 2015-10-02 17:08
浏览 70
已采纳

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

I'm new in MVC systems. I'm new user in laravel.

I have a simple problem. I read laravel documentation. But i couldn't understand MVC system exactly.

Model : App\Models\User Controller : App\Http\Controllers\AuthController View : template/navbar.blade.php

Model

    <?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;
    }
}

Controller

<?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
        }
    }
}

I want to show userRoleName in navbar (in views)

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

How can i do that ? I'm using laravel 5.1

  • 写回答

1条回答 默认 最新

  • duanjing3656 2015-10-03 11:08
    关注

    Create a function called getUserRoleAttribute in your User-Model like this:

    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
        }
    }
    

    You can remove your other userRole-function in your model and controller entirely and just access this attribute like you access the name in your view:

    Auth()->user()->user_role
    

    This is called an accessor (link to Laravel Docs)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?