Widget Personalizado

  1. Nesse tutorial vou tentar exemplificar de forma mais clara e objetiva o uso de widget com o CDataProvider.
  2. Nesse controller eu fiz um simples select com 2 condições, ordenando de forma crescente e trazendo 10 registros. Isso seria equivalente a:
  3. Em $dataProvider = new CActiveDataProvider('Model',... o termo Model é o nome correspondente ao seu model.
  4. É 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.
  5. No Lugar desejado da sua view, basta chamar seu widget, seja dentro de um div, span, tabela etc.
  6. No exemplo vou chama-la de arquivoDaView.php
  7. 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.
  8. Trocando em miudos, eu teria essa linha gerada no HTML:
  9. 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&amp;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

6 0
4 followers
Viewed: 10 540 times
Version: 1.1
Category: Tutorials
Written by: Cálcio
Last updated by: Cálcio
Created on: Apr 20, 2012
Last updated: 9 years ago
Update Article

Revisions

View all history

Related Articles