- Nesse tutorial vou tentar exemplificar de forma mais clara e objetiva o uso de widget com o CDataProvider.
- Nesse controller eu fiz um simples select com 2 condições, ordenando de forma crescente e trazendo 10 registros. Isso seria equivalente a:
- 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.
- No Lugar desejado da sua view, basta chamar seu widget, seja dentro de um div, span, tabela etc.
- No exemplo vou chama-la de arquivoDaView.php
- Aqui estou 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:
- Então, para cada item achado na sua consulta ele retornaria um
Nesse tutorial vou tentar exemplificar de forma mais clara e objetiva o uso de widget com o CDataProvider. ¶
Here I will explain with the clear way and objective an use the widget with 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: ¶
On the controller I wrote a simple query with two conditions and got 10 register.
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. ¶
In $dataProvider = new CActiveDataProvider('Model',... the term Model It's your 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. ¶
It's very important to notice that $dataProvider->setPagination(false); is required. It's controls the "Limit" query, In the other words, without "Limit" it's do not work.
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. ¶
Use the code above in your view. Call it on a div, span, table etc.
View parcial / partial view ¶
No exemplo vou chama-la de arquivoDaView.php ¶
I used the arquivoDaView.php to call it.
<li>
<?php echo CHtml::link(CHtml::encode($data->campo2), array('view', 'param1'=>$data->campo1)); ?>
</li>
Aqui estou 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. ¶
Here I created a tag and I created a link in any view pass as a parameter param1 = value1 the text that will be shown is $data->campo2.
Trocando em miudos, eu teria essa linha gerada no HTML: ¶
Simply put, I would have this line generated in 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 ¶
So, for each item found in his query he would return a
If you have any questions, please ask in the forum instead.
Signup or Login in order to comment.