Php Laravel 5视图编写器服务提供程序,从通配符中排除前缀

Php Laravel 5视图编写器服务提供程序,从通配符中排除前缀,php,laravel-5,Php,Laravel 5,在下面的步骤中,我为我的基本视图创建了一个类Composer ServiceProvider和一个ViewComposer。我想为我的站点的管理区域使用另一个名为AdminComposer的视图生成器。以下是我的类标题: (namespace App\Http\Composers) class ViewComposer class AdminComposer extends ViewComposer 这是我的作曲家服务提供商: <?php namespace App\Providers

在下面的步骤中,我为我的基本视图创建了一个类Composer ServiceProvider和一个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()
    {
        //
    }

}

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


您需要视图生成器做什么?只需将它附加到两个区域的布局视图就足够了,它包含各种标准输入、数据、变量等。我曾经在Laravel4中使用过这些方法,在那里我刚刚创建了一个自定义视图方法,它在L5中已经不能很好地工作了。我设置默认页面标题,添加要加载的样式表和脚本列表,加载一些用户设置,等等。AdminComposer只覆盖ViewComposer的一小部分。您认为将它们附加到布局视图会起作用吗?不确定。如果这涉及到在控制器中使用“$this->layout”来做任何事情,那么不,因为我的应用程序中没有使用它。不,绝对没有。我假设您在视图中使用的是
@extends('something')
?这就是你的“布局”视图。
View::composer('layouts.admin', 'App\Http\Composers\AdminComposer');
View::composer('layouts.master', 'App\Http\Composers\ViewComposer');