如何使用laravel视图作曲家排除某些视图

Chi*_*iko 5 php laravel laravel-routing laravel-5.2

如何确保通过视图编辑器为选择视图加载数据,并且只排除几个特定的​​两个视图?我可以使用正则表达式而不是“*”吗?

public function boot()
{
    view()->composer(
        '*',
        'App\Http\ViewComposers\ProfileComposer'
    );
}
Run Code Online (Sandbox Code Playgroud)

我只想避免两个视图,它们扩展了其他人使用的相同刀片,不确定宣布所有 99 个其他视图将是最好的-如果我能定义要排除的那些,那就太好了。

sun*_*yap 6

也许这不是最好的方法,但它可以这样做

在您的服务提供商中注册您的视图编辑器

public function boot()
{
    view()->composer(
        '*',
        'App\Http\ViewComposers\ProfileComposer'
    );
}
Run Code Online (Sandbox Code Playgroud)

在您的ProfileComposer撰写方法中,视图类存储库是类型提示的。使用它来获取视图当前名称的名称,并为排除的视图名称设置条件。

class ProfileComposer
{


    public function __construct()
    {
        // Dependencies automatically resolved by service container...
    }

    /**
     * Bind data to the view.
     *
     * @param  View  $view
     * @return void
     */
    public function compose(View $view)
    {
        $excludedViews = ['firstView','SecondView'];

        //Check if current view is not in excludedViews array
        if(!in_array($view->getName() , $excludedViews))
        {
             $view->with('dataName', $this->data);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)