dongnao1908 2014-08-14 23:38
浏览 28
已采纳

Laravel 4仅在验证过滤后查看:: share()

I have some user data I need to share with all views, a list of 'types' owned by the user. I have setup a view::share to accomplish this, and placed it inside my routes.php inside an 'auth' filtered group like so:

routes.php

/* Authenticated group */
Route::group( array('before' => 'auth'), function() {

    // Bring list of user's Types into views for sidebar menu generation
    View::share( 'types', User::find( Auth::user()->id )->types );

    /* Some user routes */

});

This works properly when the user is logged in, however when they are logged out it throws Trying to get property of non-object error. Am I misunderstanding how route filtering works? I'm guessing this View::share is still being processed even though it is inside the 'auth' filtered route group.

What is the proper way to do this? Should I create a Route::filter to share the data and then apply it to the route group?

  • 写回答

2条回答 默认 最新

  • drmeu26880 2014-08-15 10:40
    关注

    You might be able to just share the variable in your filters instead.

    Assuming you use Laravel's default auth filters (in filters.php):

    Route::filter('auth', function()
    {
        if (Auth::guest()) {
            View::share('types', 'not_logged_in');
            return Redirect::guest('login');
        }
        else {
            View::share('types', User::find( Auth::user()->id )->types);
            // If you are not returning anything, this filter passes
        }
    });
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)