如何使用laravel view composer排除某些视图

时间:2016-07-26 00:21:31

标签: php laravel laravel-5.2 laravel-routing

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

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

我只想避免两种观点,它们扩展了其他人使用的相同刀片,不确定声明所有其他99种将是最好的 - 如果我可以定义那些被遗漏的那些太棒了。

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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);
        }
    }
}