使用通配符绑定View :: composer以匹配所有视图?

Ari*_*ona 8 php laravel laravel-3

我有这样的导航栏.

<li>Account</li>
   <ul>
      <li>Register</li>
      <li>Login/li>
      ...
Run Code Online (Sandbox Code Playgroud)

我想根据情况动态更新Auth::check().例如,如果用户已登录,则"帐户"将更改为"我的个人资料页面",子兄弟姐妹将被替换为适当的数组.

我需要View::make calls在我的控制器中编辑而不需要编辑.看起来很糟糕.

这样的解决方案正是我所寻求的;

View::composer('home.*', function($view) {
    if(Auth::check())
       return $view->nest('accountArea', 'home.navigation-loggedIn', null);
    else
       return $view->nest('accountArea', 'home.navigation-visitor', null);
});
Run Code Online (Sandbox Code Playgroud)

如果有更好的选择,我也想听听它们!

Ari*_*ona 12

看起来像Laravel作品中的通配符.截至目前,他们只是没有证件.

View::composer('admin.layouts.*', function($view)
{
     if (Sentry::check()) $view->with('navigation', View::make('admin._partials.navigation'));
     else                 $view->with('navigation', null);
});
Run Code Online (Sandbox Code Playgroud)

这就是我想要的.

更新:这是一个替代解决方案

您还可以将其绑定到布局,因此扩展该布局的所有子视图都将受益于编写器.

View::composer('admin.layouts.main_layout', function($view)
{
     if (Sentry::check()) $view->with('navigation', View::make('admin._partials.navigation'));
     else                 $view->with('navigation', null);
});
Run Code Online (Sandbox Code Playgroud)

它会将作曲家绑定到每个视图@extend('admin.layouts.main_layout').