PDA

View Full Version : آموزش: نمایش CListView به صورت ستون بندی



mohsen_31369
یک شنبه 20 بهمن 1392, 11:01 صبح
با سلام خدمت دوستان
چند وقت پیش می خواستم از ویجت CListView در پروژه ام استفاده کنم به طوریکه هر چند آیتم را درون یک div قرار بدهم. به شکل زیر :


<div class='row' >
<div> item 1 </div>
<div> item 2 </div>
<div> item 3 </div>
<div> item 4 </div>
</div>


به همین منظور CListView رو کمی تغییر دادم که برای شما هم قرار می دم که استفاده نمایید




<?php


Yii::import('zii.widgets.CListView');

class ColListView extends CListView {


public $columns = 2;

public $colTag = 'div';

public $colHtmlOptions = array('class'=>'row-fluid');


public function renderItems() {
$numColumns = (int) $this->columns; // Number of columns

if ($numColumns < 2) {
parent::renderItems();
return;
}

echo CHtml::openTag($this->itemsTagName, array('class' => $this->itemsCssClass)) . "\n";
$data = $this->dataProvider->getData();

if (($n = count($data)) > 0) {


$owner = $this->getOwner();
$render = $owner instanceof CController ? 'renderPartial' : 'render';
$count = count($data);
foreach ($data as $i => $item) {
$i++;

/*
* open column tag
*/
if (($i) % $numColumns == 1){
echo CHtml::openTag($this->colTag, $this->colHtmlOptions);
}

$data = $this->viewData;
$data['index'] = $i;
$data['data'] = $item;
$data['widget'] = $this;
$owner->$render($this->itemView, $data);


/*
* close column tag
*/
if (($i) % $numColumns == 0 or $i==($count)) {
echo CHtml::closeTag('div');
}
}

} else {
$this->renderEmptyText();
}
echo CHtml::closeTag($this->itemsTagName);
}

}

?>


نحوه ی استفاده



<?php
$this->widget('ext.ColListView', array(
'dataProvider'=>$dataProvider,
'itemView'=>'//view/_view',
'columns' => 4,
'colTag' => 'ul',
'colHtmlOptions' => array('class' => 'row'),

));?>