Lançado Adianti Framework 7.6!
Clique aqui para saber mais
TDBComboMultiValue Oi galera. Precisei criar um novo tipo de combo para atender as necessidades da empresa em que eu trabalho e gostaria de compartilhar. Aqui temos o costume de listar os clientes numa select passando como label uma string composta de id e razao social, concatenada da seguinte maneira: $id.' - '.$razaoSocial Então mechendo no codigo do TDBCombo eu vi que eu poderia concatenar d...
GE
TDBComboMultiValue  
Oi galera.
Precisei criar um novo tipo de combo para atender as necessidades da empresa em que eu trabalho e gostaria de compartilhar.
Aqui temos o costume de listar os clientes numa select passando como label uma string composta de id e razao social, concatenada da seguinte maneira:
$id.' - '.$razaoSocial

Então mechendo no codigo do TDBCombo eu vi que eu poderia concatenar diversos values nessa parte do código:
$items[$object->$key] = $object->$value;


Portanto resolvi reescrever o componente para caso ele receba um array de valores ele irá realizar a concatenação, conforme o código abaixo:

  1. <?php
  2. /**
  3.  * Database ComboBox Widget
  4.  *
  5.  * @version    2.0
  6.  * @package    widget
  7.  * @subpackage wrapper
  8.  * @author     Gustavo Emmel
  9.  * @example    $entcodent = new TDBComboMultiValue('entcodent', 'tecbiz', 'Entidade', 'entcodent', array(0 => 'entcodent', 1 => 'entrazsoc'), 'entcodent', $criteria);
  10.  * @license    http://www.adianti.com.br/framework-license
  11.  */
  12. class TDBComboMultiValue extends TCombo
  13. {
  14.     protected $items// array containing the combobox options
  15.     
  16.     /**
  17.      * Class Constructor
  18.      * @param  $name     widget's name
  19.      * @param  $database database name
  20.      * @param  $model    model class name
  21.      * @param  $key      table field to be used as key in the combo
  22.      * @param  $value    table field to be listed in the combo
  23.      * @param  $ordercolumn column to order the fields (optional)
  24.      * @param  $criteria criteria (TCriteria object) to filter the model (optional)
  25.      */
  26.     public function __construct($name$database$model$key$value$ordercolumn NULLTCriteria $criteria NULL)
  27.     {
  28.         // executes the parent class constructor
  29.         parent::__construct($name);
  30.         
  31.         if (empty($database))
  32.         {
  33.             throw new Exception(AdiantiCoreTranslator::translate('The parameter (^1) of ^2 is required''database'__CLASS__));
  34.         }
  35.         
  36.         if (empty($model))
  37.         {
  38.             throw new Exception(AdiantiCoreTranslator::translate('The parameter (^1) of ^2 is required''model'__CLASS__));
  39.         }
  40.         
  41.         if (empty($key))
  42.         {
  43.             throw new Exception(AdiantiCoreTranslator::translate('The parameter (^1) of ^2 is required''key'__CLASS__));
  44.         }
  45.         
  46.         if (empty($value))
  47.         {
  48.             throw new Exception(AdiantiCoreTranslator::translate('The parameter (^1) of ^2 is required''value'__CLASS__));
  49.         }
  50.         
  51.         // carrega objetos do banco de dados
  52.         TTransaction::open($database);
  53.         // instancia um repositório de Estado
  54.         $repository = new TRepository($model);
  55.         if (is_null($criteria))
  56.         {
  57.             $criteria = new TCriteria;
  58.         }
  59.         $criteria->setProperty('order', isset($ordercolumn) ? $ordercolumn $key);
  60.         // carrega todos objetos
  61.         $collection $repository->load($criteriaFALSE);
  62.         
  63.         // adiciona objetos na combo
  64.         if ($collection)
  65.         {
  66.             $items = array();
  67.             foreach ($collection as $object)
  68.             {
  69.                 if(is_array($value))
  70.                 {
  71.                     foreach($value as $k => $v)
  72.                     {
  73.                         if($k == 0)
  74.                         {
  75.                             $items[$object->$key] = $object->$v;
  76.                         }
  77.                         else
  78.                         {
  79.                             $items[$object->$key] .= ' - '.$object->$v;
  80.                         }
  81.                     }
  82.                 }
  83.                 else
  84.                 {
  85.                     $items[$object->$key] = $object->$value;
  86.                 }
  87.             }
  88.             parent::addItems($items);
  89.         }
  90.         TTransaction::close();
  91.     }
  92. }
  93. </code>

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (0)