Filtrar dados com DropDown

Olá, alguém tem alguma idéia de como posso implementar esta funcionalidade?

Preciso que na lista de Posts exista uma dropdown no topo contendo o status que eu desejo filtrar para exibir na grid. Por exemplo, se o usuário precisar ver somente os posts publicados atualmente ele clica no dropdown e escolhe Publicados, então a grid deve exibir somente os posts com status de publicado e assim por diante…

Não encontrei uma maneira de fazer o dropdown executar uma ação e muito menos de fazer com que a minha ação admin ou list entenda o filtro que eu desejo…

Qualquer ajuda é bem-vinda!!!

Scoob, isso deve te ajudar:

http://www.yiiframew…oc/cookbook/24/

É sobre dois dropdowns dependentes, mas acho que já deve dar uma luz de como te ajudar.

Outra idéia (mais atual) é combinar essa idéia junto com Named Scopes.

Abraço!

Ola scoob,

creio que vc precise fazer algo como o dropdown das extensões: http://www.yiiframew…com/extensions/.

Se for isso, veja como fazer em:

http://www.yiiframew…oc/cookbook/11/

O link do tucz0 é mais indicado mesmo, para o seu caso.

OK, muito obrigado a todos, deu certinho!!!

Acabei fazendo algo assim:

<form action="<?php echo Yii::app()->baseUrl.'/post/admin';?>" method="get">

<?php echo CHtml::dropDownList('status',$status,array(0=>'Todos',1=>'Rascunhos',2=>'Publicados',3=>'Arquivados'),array('onchange'=>'javascript:document.forms[0].submit();')); ?>

</form>

Assim que a pessoa clica sobre o dropDown, o conteúdo é filtrado e atualizado

Valeu!!

Hehe, eu acho que vc ainda nao entendeu bem o espirito do Yii =D

Vou explicar pelo teu codigo:

<form action="<?php echo Yii::app()->baseUrl.'/post/admin';?>" method="get">

R: Desnecessario, podia ter feito assim

<?php echo CHtml::form('','get'); ?>  --mesmo efeito e mais flexivel

<?php echo CHtml::dropDownList('status',$status,array(0=>'Todos',1=>'Rascunhos',2=>'Publicados',3=>'Arquivados'),

array('onchange'=>'javascript:document.forms[0].submit();')); ?>

R: 1) Ponha seus status dentro de uma função no model. 2) Voce está fazendo a recarga de forma 'manual'.

Deixe isso a cargo do Yii.

Faça assim:

<?php echo CHtml::dropDownList('status',$status,$post->statusList,array('empty'=>'All categories', 'submit'=>''))

</form>

O 'submit' do final faz a mesma coisa que vc está querendo.

Abraço!

é…vou levar um tempinho até me acostumar com o Yii…mas chego lá…hhe

Funciona perfeitamente!

Muito obrigado!!!

A propósito, se algum iniciante como eu encontrar este tópico por acidente e precisar fazer a mesma coisa…hehe…como ficou:

Na view admin e list

<?php echo CHtml::form('','get'); ?>

Exibir:

<?php echo CHtml::dropDownList('status',

    isset($_GET['status'])?(int)$_GET['status']:0,

    Post::getStatusOptions(),

    array('empty'=>'Todos', 'submit'=>'')); ?>

<?php echo CHtml::endForm(); ?>

No model Post (essa eu copiei do próprio guia do Blogger)

const STATUS_DRAFT=1;


const STATUS_PUBLISHED=2;


const STATUS_ARCHIVED=3;





public function getStatusOptions()


{


	return array(


		self::STATUS_DRAFT=&gt;&#039;Rascunho&#039;,


		self::STATUS_PUBLISHED=&gt;&#039;Publicado&#039;,


		self::STATUS_ARCHIVED=&gt;&#039;Arquivado&#039;,


	);


}

Um grande abraço!!

;D

comigo não está funcionando alguém tem ideia?


	$selected = isset($_GET['tipo'])?$_GET['tipo']:null;

	$data = Modelo_Tear::getTipoOptions(); 	

	echo CHtml::dropDownList('tipo',$selected, $data, array('submit'=>''));



desculpa ai pessoal, mas era um pro com jQuery.

Se o id do botão de submit for ‘submit’ ele não consegue fazer o submit, não sabia disso ai o firebug resolveu meu pro :D