使用父 class 的 属性 在 php (yii2) 中给出 "unknown property" 错误

Using property of parent class gives "unknown property" error in php (yii2)

我正在使用 yii2 和 Kartik 的 yii2-grid gridview 扩展。我在 GridView::widget 初始化时得到异常 Setting unknown property: kartik\grid\GridView::autoIdPrefix。但是 kartik\grid\GridView 的继承是 yii\grid\GridView » yii\widgets\BaseListView » yii\base\Widget » yii\base\Component » yii\base\Objectyii\base\Widget 有 public 参数 autoIdPrefix.

我正在使用以下初始化:

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'autoIdPrefix' => 'igl_' . $model->id,
    'showHeader' => false,
    'columns' => [
        [ 'attribute' => 'language' ],
        [
            'class' => 'kartik\grid\EditableColumn',
            'attribute' => 'name',
            'value' => 'name',
            'editableOptions' => [
                'formOptions' => [
                    'action' => \yii\helpers\Url::to(['/ingredient-group-lang'])
                ]
            ]

        ],
    ],
]); ?>

怎么了?

属性 $autoIdPrefix 是小部件 class 的静态 属性,因此不会被子 classes 继承。如果你需要修改widget的id我建议直接设置,所以

<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'id' => 'igl_' . $model->id,
'showHeader' => false,
'columns' => [
    [ 'attribute' => 'language' ],
    [
        'class' => 'kartik\grid\EditableColumn',
        'attribute' => 'name',
        'value' => 'name',
        'editableOptions' => [
            'formOptions' => [
                'action' => \yii\helpers\Url::to(['/ingredient-group-lang'])
            ]
        ]

    ],
],

]); ?>