laravel 4中的全局变量

时间:2014-06-25 16:05:12

标签: php laravel laravel-4

- 对不起,laravel noob来自普通的php。

我正在使用遗留的php全局问题。我希望能够在我的所有视图中调用函数中的数据。

基本上,我有一个名为loggedInUser的类,我用$ loggedInUser实例化,我可以调用一个对象,例如, $ loggedInUser-> USER_ID

现在,我不知道该怎么办。我不知道在哪里/如何定义信息。我尝试在/app/filters.php(在函数之前)执行它并没有工作,并且在bootstrap / start.php中也没有工作,因为Session :: classes无法在那里调用。

我在filters.php中有这个代码,但它似乎没有使用类本身,但我拉的每一件事,例如 - > user_id是一个不应该是这种情况的类。我怎样才能让它成为一个对象呢?知道放置代码最适合我的地方吗?

App::singleton('loggedInUser', function(){
    $app = new stdClass;
    if (Auth::check()) {
        // Put your User object in $app->user
        //$app->user = Auth::User();
        $loggedInUser = new loggedInUser();
        $user_id = Session::get('uid');
        $app->email = DB::table('app_Users')->where('User_ID', '=', $user_id)->pluck('Email');
        $app->user_id = $user_id;
        $app->display_username = DB::table('app_Users')->where('User_ID', '=', $user_id)->pluck('Username');
        $app->clean_username = DB::table('app_Users')->where('User_ID', '=', $user_id)->pluck('Username_Clean');
        $app->isLogedin = TRUE;
    }
    else {
        $app->isLogedin = FALSE;
    }
    return $app;
});
$app = App::make('loggedInUser');
View::share('loggedInUser', $app);  

感谢您的投入!

1 个答案:

答案 0 :(得分:2)

这是非常诚实的 - 如果它冒犯了我很抱歉 - 但是这里你的编码逻辑存在很多问题 - 很明显你不理解Laravel。我建议做一些教程,我个人推荐Laracasts.com

您基本上不需要您编写的任何代码。你所需要的只是

View::share('loggedInUser', Auth::user());  

然后在你看来

{{{ $loggedInUser->email }}}
{{{ $loggedInUser->display_username }}}

等...

有些人会说你甚至不需要View :: share()函数 - 只是在你的视图中这样做:

{{{ Auth::user()->email }}}
{{{ Auth::user()->display_username }}}