使用 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)
我是 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)