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:
Então mechendo no codigo do TDBCombo eu vi que eu poderia concatenar diversos values nessa parte do código:
Portanto resolvi reescrever o componente para caso ele receba um array de valores ele irá realizar a concatenação, conforme o código abaixo:
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:
- <?php
- /**
- * Database ComboBox Widget
- *
- * @version 2.0
- * @package widget
- * @subpackage wrapper
- * @author Gustavo Emmel
- * @example $entcodent = new TDBComboMultiValue('entcodent', 'tecbiz', 'Entidade', 'entcodent', array(0 => 'entcodent', 1 => 'entrazsoc'), 'entcodent', $criteria);
- * @license http://www.adianti.com.br/framework-license
- */
- class TDBComboMultiValue extends TCombo
- {
- protected $items; // array containing the combobox options
- /**
- * Class Constructor
- * @param $name widget's name
- * @param $database database name
- * @param $model model class name
- * @param $key table field to be used as key in the combo
- * @param $value table field to be listed in the combo
- * @param $ordercolumn column to order the fields (optional)
- * @param $criteria criteria (TCriteria object) to filter the model (optional)
- */
- public function __construct($name, $database, $model, $key, $value, $ordercolumn = NULL, TCriteria $criteria = NULL)
- {
- // executes the parent class constructor
- parent::__construct($name);
- if (empty($database))
- {
- throw new Exception(AdiantiCoreTranslator::translate('The parameter (^1) of ^2 is required', 'database', __CLASS__));
- }
- if (empty($model))
- {
- throw new Exception(AdiantiCoreTranslator::translate('The parameter (^1) of ^2 is required', 'model', __CLASS__));
- }
- if (empty($key))
- {
- throw new Exception(AdiantiCoreTranslator::translate('The parameter (^1) of ^2 is required', 'key', __CLASS__));
- }
- if (empty($value))
- {
- throw new Exception(AdiantiCoreTranslator::translate('The parameter (^1) of ^2 is required', 'value', __CLASS__));
- }
- // carrega objetos do banco de dados
- TTransaction::open($database);
- // instancia um repositório de Estado
- $repository = new TRepository($model);
- if (is_null($criteria))
- {
- $criteria = new TCriteria;
- }
- $criteria->setProperty('order', isset($ordercolumn) ? $ordercolumn : $key);
- // carrega todos objetos
- $collection = $repository->load($criteria, FALSE);
- // adiciona objetos na combo
- if ($collection)
- {
- $items = array();
- foreach ($collection as $object)
- {
- if(is_array($value))
- {
- foreach($value as $k => $v)
- {
- if($k == 0)
- {
- $items[$object->$key] = $object->$v;
- }
- else
- {
- $items[$object->$key] .= ' - '.$object->$v;
- }
- }
- }
- else
- {
- $items[$object->$key] = $object->$value;
- }
- }
- parent::addItems($items);
- }
- TTransaction::close();
- }
- }
- </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
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos
Quero me inscrever agora!
Comentários (0)
Novo Comentário