Мне нужно установить пользовательский атрибут данных для элементов ListView. В качестве примера я пытаюсь получить текущий идентификатор модели DataProvider. Но я все еще вижу ошибку «htmlspecialchars () ожидает, что параметр 1 будет строкой, объект задан». Пожалуйста, проверьте мой код и помогите мне — как мне получить этот идентификатор?
<?= 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
просмотреть файл.
Других решений пока нет …