Carregar Campos UF / Cidade Olá pessoal, preciso de uma ajudinha.. Tenho 2 campos em meu formulário do tipo TCombo e TDBCombo.. $Uf = new TCombo('Uf'); $Cidade = new TDBCombo('Cidade','dbmysql','MunicipiosIbgeModelo','codigo','municipio','municipio', $criteria); //no criteria eu filtrei por padrao apenas cidades do estado SP No Combo UF, eu setei o onChangeAction conforme a seguir, porém o TDBCombo Cidade não e...
RR
Carregar Campos UF / Cidade  
Olá pessoal, preciso de uma ajudinha..

Tenho 2 campos em meu formulário do tipo TCombo e TDBCombo..

$Uf = new TCombo('Uf');
$Cidade = new TDBCombo('Cidade','dbmysql','MunicipiosIbgeModelo','codigo','municipio','municipio', $criteria); //no criteria eu filtrei por padrao apenas cidades do estado SP

No Combo UF, eu setei o onChangeAction conforme a seguir, porém o TDBCombo Cidade não está sendo populado..

Alguém pode dar um help?

 
  1. <?php
  2. public static function onUfChangeAction($param)
  3. {
  4. try
  5. {
  6. //var_dump($param);
  7. TTransaction::open('dbmysql');
  8. $repositorio = new TRepository('MunicipiosIbgeModelo');
  9. $criteria = new TCriteria();
  10. $criteria->add(new TFilter('uf', '=', $param['key']));
  11. $criteria->setProperty('order', 'municipio');
  12. $cidades = MunicipiosIbgeModelo::getObjects($criteria);
  13. // adiciona objetos na combo
  14. $items = array();
  15. foreach ($cidades as $object)
  16. {
  17. $items[$object->codigo] = $object->municipio;
  18. }
  19. //para fins de debug
  20. new TMessage('info', count($items));
  21. TDBCombo::reload('form_parceiro', 'Cidade', $items);
  22. TTransaction::close();
  23. }
  24. catch (Exception $e)
  25. {
  26. new TMessage('error',$e->getMessage());
  27. TTransaction::rollback();
  28. }
  29. }
  30. ?>

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (6)


RR

Esqueci um detalhe:

Já tentei também com
 
  1. <?php
  2. TDBCombo::reloadFromModel('form_parceiro', 'Cidade','dbmysql','MunicipiosIbgeModelo','codigo','municipio','municipio', $criteria);
  3. ?>

Mas também não carregou..
LF

Por que você está usando $param['key'], não seria $param['uf'] que é o nome do campo do change?
LF

Eu resolvi assim:
 
  1. <?php
  2. /**
  3. * Action to be executed when the user changes the estado_id field
  4. * @param $param Request
  5. */
  6. public static function onChangeUF($param) {
  7. TTransaction::open('db');
  8. $options = array();
  9. $cidades = Cidade::where('estado_id', '=', $estado_id)
  10. ->load();
  11. if ($cidades) {
  12. foreach ($cidades as $cidade) {
  13. $options[$cidade->cidade_id] = $cidade->cidade_nome;
  14. }
  15. } else {
  16. $options[] = 'Não há cidades';
  17. }
  18. TTransaction::close();
  19. TCombo::reload('form_Bairro', 'cidade_id', $options, TRUE);
  20. }
  21. ?>
RR

Então.. estou usando $param['key'] por que o campo chave do meu Tcombo com as UFs tem como key a UF.. quanto a isto não tenho problema pois estou recebendo o valor correto, ou seja, a UF escolhida.. Tanto é que, quando dou um new TMessage('info', count($items)); para debugar, é mostrado o numero correto de cidades da UF escolhida.. ou seja.. o array com itens está sendo preenchido, porem, não está sendo passado para o TDBCombo Cidades.

Ja tentei passar uma array fixa também para fins de testes ou seja:
 
  1. <?php
  2. $arrCidades = array("11" => "Cidade Teste 1",
  3. "12" => "Cidade Teste 2" );
  4. TDBCombo::reload('form_parceiro', 'Cidade', $arrCidades);
  5. ?>

Mas também não foi.. Será que é porque estou usando TDBCombo ao invés de TCombo?
RR

Tentei com TCombo também para ver se seria problema do TDBCombo, mas também não funcionou..

$Cidade = new TCombo('Cidade');

e no changeAction da UF coloquei:
 
  1. <?php
  2. $arrCidades = array("11" => "Cidade Teste 1",
  3. "12" => "Cidade Teste 2" );
  4. TCombo::reload('form_parceiro', 'Cidade', $arrCidades);
  5. ?>

Mesmo assim o campo cidade não é populado..
:(
NR

Poste todo o código...