【问题标题】:Laravel 5 catching included view params in view composerLaravel 5 在视图作曲家中捕获包含的视图参数
【发布时间】:2016-01-10 03:52:41
【问题描述】:

所以我正在尝试制作一些小部件服务,但遇到了一个问题。在我的仪表板中,我包括部分视图“小部件”的数量并将参数“设置”传递给它。对我来说一切都应该没问题,但我想在我的视图作曲家中读取这个“设置”参数,所以我应该能够传递正确的“newData” 到“小部件”视图。我发现了类似 $view->getData();但是当我使用这个无限循环时。有什么建议么?

注意:我必须使用视图编辑器,并且在包含时不能传递此“newData”。

index.blade.php

<p>
    @include('widget', ['settings'=>'bla'])
</p>

一些服务提供商:

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

App\Http\ViewComposers\WidgetComposer.php

class WidgetComposer
{
    /**
     * Bind data to the view.
     *
     * @param  View  $view
     * @return void
     */
    public function compose(View $view)
    {
        $view->with('newData', 'someArrayWithData');
    }
}

widget.blade.php

<p>
    {!! $newData !!}
</p>

【问题讨论】:

    标签: php view laravel-5 include


    【解决方案1】:

    好的,所以应该是$view->getData();

    class WidgetComposer
    {
        /**
         * Bind data to the view.
         *
         * @param  View  $view
         * @return void
         */
        public function compose(View $view)
        {
            $settings = $view->getData()['settings'];
            $data = $settings == 'bla' ? 'got bla' : array(); 
            $view->with('newData', $data);
        }
    }
    

    这是一个干净的项目,但是在我的主项目中,这会导致渲染器中的无限循环。不知道这是因为我不应该在这里使用的一些变量还是因为一些依赖。如果发现了什么,我会添加评论。

    【讨论】:

      猜你喜欢
      • 2015-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-28
      • 2017-12-26
      • 2016-04-26
      • 1970-01-01
      • 2014-12-01
      相关资源
      最近更新 更多