0

我看到了这个问题。我有类似的问题,但它不起作用。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 == '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>

当我登录时,它不会显示任何网站。它只是Undefined variable: roles在那个视图作曲家文件中说。

4

2 回答 2

0

在您的作曲家看来,我认为不可能返回这样的重定向。即使你可以把这个逻辑放在一个不好的地方。如果用户没有正确的身份验证级别,您应该创建一个过滤器http://four.laravel.com/docs/routing并重定向。

于 2013-08-06T19:11:09.397 回答
0

看起来您没有预先定义 $roles 并且没有将 $roles 传递到您的视图中。

当您检查视图中的 $roles 时,您需要确保该变量确实存在。其他可能性是将支票更改为类似

@if (isset($roles) && $roles == 5)

忽略错误,但从长远来看,这会变得非常混乱。

因此,请确保事先在视图编辑器和其他任何地方初始化视图变量。Laravel 试图对非初始化变量比 PHP 更严格。

于 2014-05-20T17:50:44.417 回答