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!!!
rickgrana
(Ricardo Grana)
May 26, 2009, 1:29pm
2
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!
system
(system)
May 27, 2009, 1:42pm
3
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/
rickgrana
(Ricardo Grana)
May 28, 2009, 11:56am
4
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!!
rickgrana
(Ricardo Grana)
June 1, 2009, 7:26pm
6
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=>'Rascunho',
self::STATUS_PUBLISHED=>'Publicado',
self::STATUS_ARCHIVED=>'Arquivado',
);
}
Um grande abraço!!
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