【发布时间】:2015-04-28 19:55:39
【问题描述】:
我想检查我的应用程序中的未读消息,就像它在 laravel 4 的“过滤前”中一样。我已将其放入 RouteServiceProvider.php 文件中的引导函数中:
$unread_messages = 0;
if(Auth::check())
{
$unread_messages = Message::where('owner',Auth::user()->id)
->where('read',0)
->count();
}
View::share('unread_messages',$unread_messages);
看来,我不能在那里使用Auth::check()。我已登录,但未使用 if 子句中的代码。该应用程序已命名,我在文件顶部有一个use Auth;。这在这个文件中通常是不可能的,还是一定是我犯的错误?
【问题讨论】:
-
为什么不在
app/Http/Controllers/Controller.php类中添加这个构造函数,这样所有后续控制器都将运行代码并且数据将在所有视图中可用。一定要通过parent::__construct();调用它 -
我在
use DispatchesCommands, ValidatesRequests;之后在abstract class Controller中添加了public function __construct(){ .. }。它似乎有效,但我不确定它是否是正确的方法。我应该在哪里用parent::__contruct();称呼它?我不明白。 -
嗯,它肯定与
RouteServiceProvider无关,所以它不应该驻留在那里。我认为这与为视图设置数据更相关,这是控制器要做的。将parent::__contruct();放在__construct()中。您可以在基本刀片布局上使用此方法或使用视图编辑器。 -
好的,我已将
parent::__construct()放入控制器的__construct()中,控制器有__construct()和extendController除了Auth/PasswordController.php,因为我不确定.. 谢谢你。 -
当用户未登录时使用 Auth/* 控制器。因此他们不需要这些信息。
标签: php authentication laravel-5 service-provider