You are viewing revision #1 of this wiki article.
This version may not be up to date with the latest version.
You may want to view the differences to the latest version.
Nesse wiki vou tentar exemplificar de forma mais clara e objetiva o uso de widget com o CDataProvider.
Controller ¶
/*
* Display 10 itens do Model
*/
$dataProvider = new CActiveDataProvider('Model',
array(
'criteria' => array(
'select' => 'campo1, campo2, campoN',
'condition' => 'campo1 = :campo1 AND campo2 = :campo2',
'params' => array(':campo1' => 'valor1', ':campo2' => 'valor2'),
'order' => 'campo1 ASC',
'limit' => 10,
),
)
);
$dataProvider->setPagination(false);
$this->render('index', array(
'dataProvider' => $dataProvider,
));
Nesse controller eu fiz um simples select com 2 condições, ordenando de forma crescente e trazendo 10 registros. Isso seria equivalente a:
SELECT
campo1, campo2, campoN
FROM
tabela
WHERE
campo1 = 'valor1'
campo2 = 'valor2'
ORDER
campo1 ASC
BY LIMIT 10
Em $dataProvider = new CActiveDataProvider('Model',... o termo Model é o nome correspondente ao seu model.
É muito importante observar que $dataProvider->setPagination(false); é obrigatório para que ele respeite o limit da consulta, ou seja, sem ele o limit não funciona.
View index ¶
...
<?php
$this->widget('zii.widgets.CListView', array(
'dataProvider' => $dataProvider, //DataProvider criado no Controller
'itemView' => '/pastaDaView/_arquivoDaView', //path e arquvivo de renderização parcial
'itemsTagName' => 'ul', //Cria uma tag <ul> na view
'itemsCssClass' => 'minhaClasseCss', //adiciona um class na tag <ul> criada acima.
'summaryText' => '', //Tira a exibição do texto de total de registros enconrados
));
...
?>
No Lugar desejado da sua view, basta chamar seu widget, seja dentro de um div, span, tabela etc.
View parcial ¶
No exemplo vou chama-la de arquivoDaView.php
<li>
<?php echo CHtml::link(CHtml::encode($data->campo2), array('view', 'param1'=>$data->campo1)); ?>
</li>
Aqui estrou criando as tags e nelas criando link para uma view qualquer passando como parâmetro param1 = valor1 e o texto a ser exibido será o valor contido em $data->campo2.
Trocando em miudos, eu teria essa linha gerada no HTML:
<li><a href="/meusite/index.php?r=site/view&param1=valor1">Nome 1</a></li>
Então, para cada item achado na sua consulta ele retornaria um
If you have any questions, please ask in the forum instead.
Signup or Login in order to comment.