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

Posted

技术标签:

【中文标题】Yii2 ListView 自定义数据属性基于当前 DP 模型【英文标题】:Yii2 ListView custom data-attribute based on currend DP model 【发布时间】:2016-01-03 15:49:33 【问题描述】:

我需要为 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\npager",
        ]);
        ?>

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

@ДимаПолхов 尝试 3 天后开始工作! ;-) 不,我知道,有类似的事情以这种方式工作。如果可以按照您的尝试方式填充这些数据属性,IMO 将会很有用。您可以在 github 上为此提出功能请求。

以上是关于Yii2 ListView 自定义数据属性基于当前 DP 模型的主要内容,如果未能解决你的问题,请参考以下文章

yii2 ListView 用法记录

yii2 ListView 用法记录

YII2 模型概述

Yii2 - 将当前数据库字段值保存在 php 变量中

从 Joomla 迁移到 Yii2

在 yii2 中自定义网格视图