在我的BaseController中,我有:
public function __construct()
{
$user = Auth::user();
View::share('user', $user);
}
我可以在所有视图中访问$ user数组,但是如果我希望它成为所有Controller中都可用的全局变量怎么办?
我有以下工作代码:
use Auth;
use DB;
class UsersController extends BaseController
{
public function index()
{
$user = Auth::user();
$users = DB::table('users')->where('user_id', $user->user_id)->get();
return view('pages.users.index', compact('users');
}
}
我希望$ user变量在我所有的控制器中以及每个控制器中的所有公共函数中都可用,但是我不想重新声明“ use Auth;”。和“ $ user = Auth :: user();”
我尝试将其添加到BaseController的__construct中,但这似乎不起作用,未定义$ user变量错误。有什么想法吗?我知道有可能
在其他答案中显示,您可以:
\Auth::user()
另一种技术,您可以使用auth()
助手:
auth()->user()
它甚至被记录在案。
根据此PR,没有计划user()
在Laravel中添加帮助程序。
如果您认为值得将此帮助程序添加到您的项目中,则代码如下:
function user()
{
// short and sweet
return auth()->user();
// alternative, saves one function call!!
return app('Illuminate\Contracts\Auth\Guard')->user();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句