campo lookup usando extensão jquery-cascade

18 views
Skip to first unread message

Luciano

unread,
Apr 22, 2013, 12:10:31 PM4/22/13
to yii-framew...@googlegroups.com
Bom dia amigos

No meu projeto tenho um cadastro de valvulas redutoras de pressao, onde tem um campo id_bairro, porém preciso de um campo cidades.
tabela, vrp 1 - n bairros n - 1 cidade.
Para isso estou utilizado a extensao  jquery-cascade, e os exemplos que encontrei aqui mesmo no grupo, https://groups.google.com/forum/?fromgroups=#!topic/yii-framework-brasil/Y94I90HElE8
para o primeiro dropdown de cidade estou fazendo da seguinte forma:
no _form
 $cidades = $this->createWidget('ext.jquery-cascade.jQueryCascade');
echo $cidades->dropDownList('id', '', array(), '', CController::createUrl('bairros/List'), 'id_bairros');

no segundo dropdown
echo $form->dropDownList($model, 'id_bairros', array());

em BairrosController.php

 public function actionList() {            
            if (Yii::app()->request->isAjaxRequest) {
                
                $bairros = array();
                
                $bairros[] = array('label' => 'Selecione', 'value' => '');
                
                //Testa se o id foi enviado
                if (!empty($_GET['selected'])&&$_GET['selected']!='') {                
                    $cidade = Cidades::model()->findByPk($_GET['selected']);

                    foreach ($cidades->id_cidades as $bairro) {
                        $bairros[] = array('label' => $bairro->descricao, 'value' => $bairro->id);
                    }
                }

                echo json_encode($bairros);

                Yii::app()->end();
            } else {
                throw new CHttpException(400, 'Invalid request.');
            }
        }

   A dificuladade que estou encontrado é a seguinte no primeiro drop ja tentei outras variantes como 
echo $cidades->dropDownList('id','',CHtml::listData(Cidades::model()->findAll(),'id','nome'), array('prompt'=>'Selecione a cidade'),CController::createUrl('bairros/List'),'id_cidades');
que traz as cidades perfeitamente. O problema é na chamada na função do controller que nao esta funcionando, ou seja a parte do codigo grifado nao funciona.
   Para testar no inicio da função coloca die('teste'); matar o processo e digito na url: http://localhost/smart/index.php?r=bairros/List e tenho o retorno 'teste'.
O que pode estar faltando no meu codigo que essa chamada nao funciona na hora de eu criar ou adicionar um novo create do cadastro?






Fábio Sales

unread,
Apr 22, 2013, 4:24:40 PM4/22/13
to yii-framew...@googlegroups.com
Luciano,

Boa tarde,

Verifique qual o id gerado para o dropdown de bairros, pois, provavelmente, não é "id_bairros".

echo $cidades->dropDownList('id', '', array(), '', CController::createUrl('bairros/List'), 'id_bairros');

Qualquer dúvida, use o firebug.


Atenciosamente,

Fábio Sales
Visite meu blog: http://www.tiradaruim.blogspot.com/


2013/4/22 Luciano <lucian...@yahoo.com.br>
--
--
YFB - Yii Framework Brasil
Participe nas discussões e convide outros programadores ao grupo. http://groups.google.com.br/group/yii-framework-brasil?hl=pt-BR
 
04/2011: Anexos de até 250kb foram autorizados pelos membros da lista. Use com moderação.
 
--
Postar: yii-framew...@googlegroups.com
Sair da lista: yii-framework-br...@googlegroups.com
---
You received this message because you are subscribed to the Google Groups "YFB - Yii Framework Brasil" group.
To unsubscribe from this group and stop receiving emails from it, send an email to yii-framework-br...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Luciano

unread,
Apr 22, 2013, 9:07:39 PM4/22/13
to yii-framew...@googlegroups.com
Grato Fabio, sua dica foi de extrema valia alterei o primeiro drop para a seguinte forma,

  $cidades = $this->createWidget('ext.jquery-cascade.jQueryCascade');
                echo $cidades->dropDownList('id_bairros','',CHtml::listData(Cidades::model()->findAll(),'id','nome'),                
                array('prompt'=>'Selecione a cidade'),CController::createUrl('bairros/List'),'Vrp_id_bairros');
 
desconhecia o firebug, otima ferramenta pra monitoramento, grato pela dica. Agora ja estou tendo acesso a funçao no controller e posso trabalhar em cima dela para retornar o resultado no segundo drop. Retorno ao post com os resultados

2013/4/22 Luciano <lucian...@yahoo.com.br>

---
You received this message because you are subscribed to the Google Groups "YFB - Yii Framework Brasil" group.
To unsubscribe from this group and stop receiving emails from it, send an email to yii-framework-brasil+unsub...@googlegroups.com.

Luciano

unread,
Apr 23, 2013, 7:47:34 PM4/23/13
to yii-framew...@googlegroups.com
Segue código concluso e funcionando a quem necessitar 

no _form.php

1° dropDown de cidades
$cidades = $this->createWidget('ext.jquery-cascade.jQueryCascade');
                echo $cidades->dropDownList('id_cidades','',CHtml::listData(Cidades::model()->findAll(),'id','nome'),                
                array('prompt'=>'Selecione a cidade'),CController::createUrl('bairros/List'),'Vrp_id_bairros');

2°  dropDown de bairros
echo $form->dropDownList($model, 'id_bairros', array());

no BairrosController.php
 public function actionList() {        
            if (Yii::app()->request->isAjaxRequest) {                
                $popular = array();                
                $popular[] = array('label' => 'Selecione um bairro', 'value' => '');                
                //Testa se o id foi enviado                             
                if (!empty($_GET['selected'])&&$_GET['selected']!='') {                
                    $bairros = Bairros::model()->findAll(array(
                    'condition'=>'id_cidades =' . $_GET['selected'],));                                       
                    foreach ($bairros as $bairro) {                        
                        $popular[] = array('label' => $bairro->nome, 'value' => $bairro->id);
                   }
                }
                echo json_encode($popular);

Luciano

unread,
Apr 23, 2013, 7:48:38 PM4/23/13
to yii-framew...@googlegroups.com


Em segunda-feira, 22 de abril de 2013 13h10min31s UTC-3, Luciano escreveu:
Reply all
Reply to author
Forward
0 new messages