2015-10-06 68 views
2

我需要将自定义数据属性设置为ListView元素。例如,我尝试获取当前的DataProvider模型ID。但我仍然认为错误“htmlspecialchars()期望参数1是字符串,对象给出”。请检查我的代码并遏制我 - 我该如何获得这个ID?Yii2 ListView基于currend DP模型的自定义数据属性

<?= 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}", 
     ]); 
     ?> 

回答

1

这是不可能在ListView,根据doc

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

这里不能使用的功能。只允许静态值。

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

+0

谢谢!我试图设置它在2天:( – DrHolera

+0

@ДимаПолхов它尝试了3天后开始工作!;-)不,我知道,有类似的东西,这种方式工作。如果这些数据属性可以填充你如何尝试它,那么IMO会很有用。你可以在github上为此做出功能请求。 – robsch