首页 > 解决方案 > Laravel:将当前视图名称传递给 View Composer

问题描述

我在 Laravel 中有一个刀片文件,名为 products.blade.php。在该文件中,我包含一个子视图,它显示来自数据库的数据。子视图使用 View Composer 获取数据(以避免在需要显示该数据的任何地方编写相同的代码)。

是否可以将“主”视图的名称传递给该 View Composer?

在我的 AppServiceProvider 中,我有以下代码:

    view()->composer('*', function ($view) {
        view()->share('view_name', $view->getName());
    });

所以子视图知道父视图的名称。我试过了:

@include('sub-view.name', ['parent' => $view_name])

并尝试parent在 View Composer 中访问该变量,但我得到:Undefined variable: parent.

我也尝试过$view->getName()View Composer 的 compose 方法,但是它给了我的名称,sub-view我需要parent.

任何帮助,将不胜感激。

提前致谢

标签: laravellaravel-blade

解决方案


所有视图数据都可以通过 using$view->getData()方法访问。

所以在视图作曲家你可以做

class MyCustomComposer
{
    /**
     * Bind data to the view.
     *
     * @param  View  $view
     * @return void
     */
    public function compose(View $view)
    {
        $currentView = $view->getData()['view_name'];

        // Do something
    }
}

推荐阅读