Laravel View Composer“无法将Closure类型的对象用作数组”

时间:2019-07-09 07:28:24

标签: php laravel

我正在为视图编辑器使用数组,当我尝试查看页面 Cannot use object of type Closure as array 时,它将引发此错误。

我尝试用雄辩的方法代替变量,但是最终没有奏效,因为这不是我使用它们的方式应该采用的结构。我还尝试在$view->with()变量中创建一个函数。

public function compose(View $view)
    {
        $view->with('configurable', function() {
            $configurables = Cache::rememberForever('configurables', function() {
                return Configurables::all();
            });
            $configurable = [];
            foreach($configurables as $key) {
                $configurable[$key->slug] = [
                    'value' => $key->value
                ];
            }

            return $configurable;
        });
    }

2 个答案:

答案 0 :(得分:1)

该错误意味着with()方法需要一个值,而不是一个函数(闭包)。您可以按照以下方式重构代码:

public function compose(View $view)
{

        $configurables = Cache::rememberForever('configurables', function() {
            return Configurables::all();
        });

        $configurable = [];

        foreach($configurables as $key) {
            $configurable[$key->slug] = [
                'value' => $key->value
            ];
        }

       $view->with('configurable', $configurable);
}

希望这会有所帮助。

答案 1 :(得分:-1)

尝试:

Configurables::all()->get();