我在所有视图中需要相同的菜单。

所以我得到数据,我需要输出在我的BaseController中定义的构造函数中的菜单。

要获取我第一次尝试使用的数据查看::作曲家但是dunno为什么我没有得到任何错误,它看起来像查看:: composer根本没有执行...

如果我使用视图:: share,它的工作

// baseController.php

//function called in the constructor
public function init()
{
    $envs = $this->game->environments()->get();

    View::share('test', $envs);

    View::composer('layouts.base', function($view)
    {
        $view->with('envs', $envs);
    });
}
.

// base.twig

//nothing output here, no error
{% for env in envs %}
         {{ env.name }}
{% endfor %}

//its work
{% for env in test %}
         {{ env.name }}
{% endfor %}
.

我是新的laravel,所以也许我错过了什么?

有帮助吗?

解决方案

我认为这不起作用的原因是因为在您的代码中将View Composer放在位置的位置。只要渲染视图,Laravel中的视图组合器就是基本上回调。这个属性定义函数在哪里定义?我的猜测是在定义之前正在创建视图 - 意味着永远不会执行视图编曲器回调。

尝试从init()函数中移动整个视图编曲器块,并将其附加到Routes.php文件的底部,并查看它是否有效。如果您没有太多,则这不是一个糟糕的位置,如果您没有太多,则可以创建一个新类来存储它们并将该路径添加到您的自动加载路径。

阅读更多关于查看作曲器这里

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top