【发布时间】:2017-05-09 20:11:38
【问题描述】:
我正在使用 Laravel 5.3 开发一个应用程序。我创建了一个AppController。我希望我的所有控制器都扩展 AppController,以便它们都共享一些共同的属性和方法。
鉴于以下 2 个实现,我的意图是在构造 AppController 时将当前用户设置为 $this->user,以便所有扩展 AppController 的控制器都可以使用它。
我希望当我调用\App\Http\Controllers\User\PermissionController@test 时,我应该将我的用户对象转储两次。一次是在初始化AppController 时,再次是在调用PermissionController@test 时。
但是,在AppController __construct() 内部,$this->user 始终是NULL,而PermissionController@test 按预期转储用户。
应用控制器:
<?php
namespace App\Http\Controllers\App;
use App\Http\Controllers\Controller;
class AppController extends Controller
{
/**
* The current user when logged in
* @var \User
*/
protected $user;
public function __construct()
{
if(\Auth::check() ) {
$this->user = \Auth::user();
}
var_dump($this->user);
}
}
权限控制器:
<?php
namespace App\Http\Controllers\User;
use App\Http\Controllers\App\AppController;
class PermissionController extends AppController
{
public function test()
{
if(\Auth::check() ) {
// Do something
$this->user = \Auth::user() ;
}
var_dump($this->user);
}
}
如果重要,我将使用 https://github.com/Adldap2/Adldap2-Laravel 对 Active Directory 进行身份验证。
很明显我听错了。为什么AppController __construct() 不转储用户?
【问题讨论】:
标签: php laravel laravel-5 constructor controller