Laravel 4视图生成器不工作

Laravel 4视图生成器不工作,laravel,laravel-4,Laravel,Laravel 4,我看到了这个问题。我也有类似的问题,但不起作用 我有一个视图生成器,它在基本布局中包含一些代码。这是我的作曲家: View::composer(array('common.menu_addition','common.base_errors','common.view_special'), function($view) { if(Auth::check()) { $roles = Auth::user()->type; if ($roles ==

我看到了这个问题。我也有类似的问题,但不起作用

我有一个视图生成器,它在基本布局中包含一些代码。这是我的作曲家:

View::composer(array('common.menu_addition','common.base_errors','common.view_special'), function($view)
{
    if(Auth::check()) {
        $roles = Auth::user()->type;
        if ($roles == '5') {
            $view->with('roles', $roles);
        } else {
            return Redirect::to('news/index');
        }
    }
});
当我没有登录时,它可以完美地工作。但我的一个视图编辑器文件如下所示:

    <div class="pull-right">
 @if (Auth::check())
                    @if ($roles == 5)

                      <ul class="nav">
                        <li>
                          <a href="{{ URL::to('admin/dash') }}">
                            <i class="icon-eye-open">
                            </i>

                            <strong>
                              Admin Dashboard
                            </strong>
                          </a>
                        </li>
                        </ul>

                        @endif
                        @endif
                      </div>

@if(Auth::check())
@如果($roles==5)
@恩迪夫 @恩迪夫

当我登录时,它不会显示任何站点。它只是在视图生成器文件中显示
未定义变量:roles

我认为在视图生成器中不可能返回这样的重定向。即使你可以,这也不是一个好的逻辑。如果用户没有正确的身份验证级别,您应该创建一个过滤器并重定向到别处。

看起来您没有事先定义$roles,也没有将$roles传递到视图中

在对视图中的$roles进行检查时,需要确保该变量实际存在。另一种可能是将支票更改为

@if (isset($roles) && $roles == 5)
忽略错误,但从长远来看,这会变得非常混乱


因此,请确保在视图生成器和其他地方预先初始化视图变量。Laravel试图对非初始化变量的要求比普通PHP严格得多。

我不认为返回与view composer一起工作,因为view::composer只用于将数据传递给views@TryingTobemyself我只想它有我加载的每个网站的角色,并加载我发布的视图。当我注销时,它工作正常,但当我登录时,我会收到错误。可以发布准确的错误吗?你在哪一行出错?@TryingTobemyself确切的错误是
未定义的变量:roles
在我在问题中发布的视图文件中,这一行是23.,或者它说
@if($roles==5)
你的应用程序中还有其他角色吗?我已经有一个:
Route::filter('admin',function(){if(Auth::check()){$roles=Auth::user()->role;if($roles='5'){return Redirect::to('news/index')->with('roles',$roles);}}}否则{return View::make('errors.401');}}}}});
那么,我需要一个视图生成器吗?另外,我如何制作
$roles=Auth::user()->键入;
转到我加载的每个站点?我在问题中发布的视图有效吗?