Gridview 函数 yii2 中的访问变量

Mik*_*oss 5 php yii2 yii2-advanced-app yii2-basic-app

我正在尝试访问视图文件上的变量,Gridview但它抛出了it should be array but null given我在$totalDays视图文件顶部声明的错误,我正在使用它,Gridview如下所示

[
            'attribute' =>  'class_id',
            'format' => 'raw',
            'label' => "Class Date",
            'value' => function ($model) {
                array_push($totalDays,$model->class->date);
                return $model->class->date;
            },
            'footer'=> '<span>Total Days</span>',
],
Run Code Online (Sandbox Code Playgroud)

但它抛出以下错误

array_push() 期望参数 1 是数组,给定 null

Fab*_*lli 5

usevalue可调用函数中的函数签名后插入:

[
            'attribute' =>  'class_id',
            'format' => 'raw',
            'label' => "Class Date",
            'value' => function ($model) use($totaleDays) {
                array_push($totalDays,$model->class->date);
                return $model->class->date;
            },
            'footer'=> '<span>Total Days</span>',
],
Run Code Online (Sandbox Code Playgroud)


Joe*_*ler 5

解释一下,$totalDays在小部件中不可用,因为整个函数仅在呈现小部件时才运行,$totalDays不再声明。正如@arogachev 上面暗示的那样,您需要$totalDays在模型中制作,然后才能访问它。在你的模型中试试这个;

public function getTotalDays(){
//Your logic here to generate totalDays
return $totalDays;
}
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样在你的视图中使用它;

[
    'attribute' =>  'class_id',
    'format' => 'raw',
    'label' => "Class Date",
    'value' => function ($model) {
        array_push($model->totalDays, totalDays,$model->class->date);
        return $model->class->date;
    },
    'footer'=> '<span>Total Days</span>',
],
Run Code Online (Sandbox Code Playgroud)