2016-08-17 24 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