Yii2基于当前DP模型的ListView自定义数据属性


Yii2 ListView custom data-attribute based on currend DP model

我需要为ListView元素设置自定义数据属性。例如,我尝试获取当前DataProvider模型id。但我仍然查看错误"htmlspecialchars()期望参数1是字符串,对象给定"。请检查我的代码并帮助我-我应该如何获得这个ID?

 <?= ListView::widget([
            'dataProvider' => $photoProvider,
            'id' => 'photo-list',
            'itemView' => '_photoListItem',
            'viewParams' => [
                'fullView' => true,
            ],
            'options' => [
                'tag' => 'ul',
                'class' => 'list-view'
            ],
            'itemOptions' => [
                'tag' => 'li',
                'class' => 'item',
                'data' =>[
                    'test' => function ($model, $key, $index, $widget) {
                        return Html::encode($model->id);
                    }
                ]
            ],
            'pager' => [
                'class' => ScrollPager::className(),
                'container' => '#photo-list',
                'item' => '.item',
                'triggerText' => '<div class="btn more">Load More</div>',
                'noneLeftText' => '',
                'triggerOffset' => 2,
                'negativeMargin' => 200
            ],
            'layout' => "{items}'n{pager}",
        ]);
        ?>

这在ListView中是不可能的,根据文档:

'data' => [
  'test' => function ($model, $key, $index, $widget) {
    return Html::encode($model->id);
  }
]

这里不能使用函数。只允许静态值。

或者,您可以在_photoListItem视图文件的标记中提供这些属性。