遵循视图编写器文档,我为基本视图创建了一个ComposerServiceProvider类和一个ViewComposer。我想在我网站的管理区域使用另一个View Composer,称为AdminComposer。这些是我的班级标题:
(namespace App\Http\Composers)
class ViewComposer
class AdminComposer extends ViewComposer
这是我的Composer服务提供商:
<?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()
{
//
}
}
在我的作曲家服务提供者的boot()方法中,我想将ViewComposer分配给我的所有视图,但前缀为“ admin”的视图除外,该视图应使用AdminComposer。
但是,在当前设置中,两个视图编辑器都被使用,因为路径“ admin / *”也遵循路径“ * /”。有没有一种方法可以从通配符路径中排除管理员前缀,而不必单独声明将使用ViewComposer的所有路径?
仅将视图编辑器附加到两个布局文件就足够了。这样,您不仅可以解决普通视图和管理员视图之间的冲突,而且编排程序每个请求仅运行一次,而不是两次或多次运行(对于视图和布局视图,可能还有更多视图)
View::composer('layouts.admin', 'App\Http\Composers\AdminComposer');
View::composer('layouts.master', 'App\Http\Composers\ViewComposer');
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句