yii\widgets\ListView::renderItem PHP Method

renderItem() public method

Renders a single data model.
public renderItem ( mixed $model, mixed $key, integer $index ) : string
$model mixed the data model to be rendered
$key mixed the key value associated with the data model
$index integer the zero-based index of the data model in the model array returned by [[dataProvider]].
return string the rendering result
    public function renderItem($model, $key, $index)
    {
        if ($this->itemView === null) {
            $content = $key;
        } elseif (is_string($this->itemView)) {
            $content = $this->getView()->render($this->itemView, array_merge(['model' => $model, 'key' => $key, 'index' => $index, 'widget' => $this], $this->viewParams));
        } else {
            $content = call_user_func($this->itemView, $model, $key, $index, $this);
        }
        if ($this->itemOptions instanceof Closure) {
            $options = call_user_func($this->itemOptions, $model, $key, $index, $this);
        } else {
            $options = $this->itemOptions;
        }
        $tag = ArrayHelper::remove($options, 'tag', 'div');
        $options['data-key'] = is_array($key) ? json_encode($key, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) : (string) $key;
        return Html::tag($tag, $content, $options);
    }

Usage Example

Example #1
0
 /**
  * Renders a single data model.
  * @param mixed $model the data model to be rendered
  * @param mixed $key the key value associated with the data model
  * @param integer $index the zero-based index of the data model in the model array returned by [[dataProvider]].
  * @return string the rendering result
  */
 public function renderItem($model, $key, $index)
 {
     $dateLabel = $this->renderDateLabel($model);
     $icon = $this->renderIcon($model);
     $time = $this->renderTime($model);
     $itemBody = Html::tag('div', parent::renderItem($model, $key, $index), ['class' => 'timeline-body']);
     $itemHeader = $this->renderItemHeader($model);
     $itemFooter = $this->renderItemFooter($model);
     $item = Html::tag('div', $time . $itemHeader . $itemBody . $itemFooter, ['class' => 'timeline-item']);
     return $dateLabel . Html::tag('li', $icon . $item);
 }