根据视图编辑器文档,我为我的基本视图创建了一个类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');