2016-08-17 51 views
0

我使用腳手架工具爲我的laravel項目生成身份驗證代碼。我創建了一個UserController來創建一個非常好的配置文件頁面,但是當我嘗試創建一個可以在Auth :: user()上使用的函數時,我得到一個錯誤Call to undefined method Illuminate\Database\Query\Builder::admin()在Auth :: user()上訪問控制器功能;

爲什麼不能在驗證::用戶()?這不會擴展我的UserController嗎?還是我將它與模型混合?該模型是檢查我的用戶是否爲管理員的好地方嗎?

這裏是我的用戶控制器

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use Auth; 
use App\Http\Requests; 

class UserController extends Controller 
{ 

    /** 
    * Create a new user controller instance. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 
     $this->middleware('auth'); 
    } 

    /** 
    * @return View with user data 
    */ 
    public function index() { 
     $user = Auth::user(); 

     return view('users.index', compact('user')); 
    } 

    /** 
    * @return bool 
    * Returns bool if the user is an admin. 
    */ 
    public function admin() { 
     $user = Auth::user(); 

     $authorized_users = [ 
      '[email protected]' 
     ]; 

     return array_key_exists($user->email, $authorized_users); 
    } 
} 

,我稱它在不同的路由控制器的功能

public function index() { 
    return Auth::user()->admin(); 
} 

我是相當新的laravel和PHP所以任何批評是有價值的,並希望!

回答

0

不,Auth::user()不延伸任何Controller。它表示當前登錄/認證用戶的實例。它將允許您檢索使用的其他屬性,如id,nameAuth::user()->admin();沒有任何意義。 Auth::user()UserController或任何其他控制器無關。

+0

噢好吧。實際上這是有道理的。 Durp。所以正確的方法是創建一些類型的幫助函數。我想爲我的視圖訪問isAdmin函數。 – Luca

+0

是使用助手是定義自定義函數的正確方法。這裏有一個很好的[教程](http://www.tutorials.kode-blog.com/laravel-5-custom-helper)用於創建自定義幫手 – jonju