Laravel:将当前视图名称传递给View Composer

时间:2019-12-30 11:33:35

标签: laravel laravel-blade

我在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])

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

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

任何帮助将不胜感激。

预先感谢

1 个答案:

答案 0 :(得分:0)

可以使用$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
    }
}