Laravel 5 查看作曲家服务提供商,从通配符中排除前缀
Laravel 5 view composer service provider, exclude prefix from wildcard
在 view composer documentation 之后,我为我的基本视图创建了一个 class ComposerServiceProvider 和一个 ViewComposer。我想为我站点的管理区域使用另一个名为 AdminComposer 的视图编辑器。这些是我的 class headers:
(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/*" 也遵循路径“*/”。有没有一种方法可以从通配符路径中排除 admin 前缀,而不必单独声明将使用 ViewComposer 的所有路径?
仅将视图编辑器附加到您的两个布局文件可能就足够了。这样您不仅可以解决普通视图和管理视图之间的冲突,而且作曲家每个请求只运行一次而不是两次或更多次(对于视图和布局视图以及可能更多的视图)
View::composer('layouts.admin', 'App\Http\Composers\AdminComposer');
View::composer('layouts.master', 'App\Http\Composers\ViewComposer');
在 view composer documentation 之后,我为我的基本视图创建了一个 class ComposerServiceProvider 和一个 ViewComposer。我想为我站点的管理区域使用另一个名为 AdminComposer 的视图编辑器。这些是我的 class headers:
(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/*" 也遵循路径“*/”。有没有一种方法可以从通配符路径中排除 admin 前缀,而不必单独声明将使用 ViewComposer 的所有路径?
仅将视图编辑器附加到您的两个布局文件可能就足够了。这样您不仅可以解决普通视图和管理视图之间的冲突,而且作曲家每个请求只运行一次而不是两次或更多次(对于视图和布局视图以及可能更多的视图)
View::composer('layouts.admin', 'App\Http\Composers\AdminComposer');
View::composer('layouts.master', 'App\Http\Composers\ViewComposer');