Lançado Adianti Framework 8.1!
Clique aqui para saber mais
TDBCombo com critérios Bom dia estou utilizando o framework ja a algum tempo, mas so agora me deparei com uma situação onde necessito filtrar os itens exibidos em um TDBCombo. Por ex: tenho um modelo para exibir várias cidades mas se quiser exibir no TDBCombo apenas as cidades de um determinado estado eu não sei como proceder. Grato...
PP
TDBCombo com critérios  
Bom dia estou utilizando o framework ja a algum tempo, mas so agora me deparei com uma situação onde necessito filtrar os itens exibidos em um TDBCombo. Por ex: tenho um modelo para exibir várias cidades mas se quiser exibir no TDBCombo apenas as cidades de um determinado estado eu não sei como proceder.

Grato

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 (5)


JD

Tente isso:
  1. <?php
  2. $combo = new TCombo('seucombo');
  3. $combo->addItems(Cidade::where("estado","=","MG"));
  4. ?>


Ou então use o método estático "where" para listar, assim como eu fiz no exemplo acima, ai depois você trata cada item e monta o array para add no combo.
Espero ter ajudado.
JD

Veja: adianti.com.br/api-framework-database-TRecord#where
PP

Obrigado Jheferson

Realizei o procedimento acima mas o combo ainda não está populado.
NR

O TDBCombo aceita um TCriteria como parâmetro. Veja a assinatura da função:
  1. <?php
  2.     /**
  3.      * Class Constructor
  4.      * @param  $name     widget's name
  5.      * @param  $database database name
  6.      * @param  $model    model class name
  7.      * @param  $key      table field to be used as key in the combo
  8.      * @param  $value    table field to be listed in the combo
  9.      * @param  $ordercolumn column to order the fields (optional)
  10.      * @param  $criteria criteria (TCriteria object) to filter the model (optional)
  11.      */
  12.     public function __construct($name$database$model$key$value$ordercolumn NULLTCriteria $criteria NULL)
  13. ?>

Ex:
  1. <?php
  2. $criteria = new TCriteria();
  3. $criteria->add(new TFilter('estado','=',$estado));
  4. $combo = new TDBCombo('campo','banco','model','chave','valor','ordem',$criteria);
  5. ?>
AM

O exemplo do Nataniel está ocorrendo o seguinte erro:

// Filtra a Rede de Farmacias ao qual o usuário pertence $criteria = new TCriteria; $criteria->add(new TFilter('grupo_id', '=', TSession::getValue('idgrupo') )); $cliente_id = new TDBCombo('cliente_id', 'pharmaped', 'Farmacias', 'id', 'nome', 'nome asc', $criteria );


Warning: call_user_func_array() expects parameter 1 to be a valid callback, class 'AdiantiWidgetBaseTElement' does not have a method 'setMinLength' in D:wamp64wwwclubb2bpharmalibadiantiwidgetformTField.php on line 101
Call Stack
# Time Memory Function Location
1 0.0011 257680 {main}( ) ...engine.php:0
2 0.3174 2143504 TApplication::run( ) ...engine.php:55
3 0.3199 2197528 AdiantiCoreAdiantiCoreApplication::run( ) ...engine.php:36
4 0.3584 2419896 PedidoForm->__construct( ) ...AdiantiCoreApplication.php:60
5 0.4072 4193824 setMinLength ( ) ...PedidoForm.php:54
6 0.4072 4194200 AdiantiWidgetFormTField->__call( ) ...PedidoForm.php:54
7 0.4072 4194616 call_user_func_array:{D:wamp64wwwclubb2bpharmalibadiantiwidgetformTField.php:101} ( ) ...TField.php:101

Alguém sabe qual o problema?