Laravel 5查看composer服务提供商,从通配符中排除前缀


Laravel 5 view composer service provider, exclude prefix from wildcard

根据视图编辑器文档,我为我的基本视图创建了一个类ComposerServiceProvider和一个ViewComposer。我想为我的站点的管理区域使用另一个名为AdminComposer的视图编辑器。这些是我的课堂标题:

(namespace App'Http'Composers)
class ViewComposer
class AdminComposer extends ViewComposer

这是我的作曲家服务提供商:

<?php namespace App'Providers;
use View;
use Illuminate'Support'ServiceProvider;
class ComposerServiceProvider extends ServiceProvider {
    /**
     * Register bindings in the container.
     *
     * @return void
     */
    public function boot()
    {
        View::composer('admin/*', 'App'Http'Composers'AdminComposer');
        View::composer('*', 'App'Http'Composers'ViewComposer');
    }
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

在我的composer服务提供程序的方法boot()中,我想将ViewComposer分配给我的所有视图,除了前缀为"admin"的视图,它应该使用AdminComposer。

然而,在当前设置中,使用了两个视图编辑器,因为路径"admin/*"也与路径"*/"一致。有没有一种方法可以将admin前缀从通配符路径中排除,而不必单独声明所有将使用ViewComposer的路径?

只将视图编辑器附加到两个布局文件中可能就足够了。这样,您不仅可以解决正常视图和管理视图之间的冲突,而且编写器每个请求只运行一次,而不是两次或两次以上(对于视图和布局视图,可能还有更多视图)

View::composer('layouts.admin', 'App'Http'Composers'AdminComposer');
View::composer('layouts.master', 'App'Http'Composers'ViewComposer');