{parts/gtag_head.html} {parts/gtag_body.html}
Conheça  A Ferramenta LowCode mais moderna e veloz para desenvolvimento PHP: Adianti Creator
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. * Class Constructor
  17. * @param $name widget's name
  18. * @param $database database name
  19. * @param $model model class name
  20. * @param $key table field to be used as key in the combo
  21. * @param $value table field to be listed in the combo
  22. * @param $ordercolumn column to order the fields (optional)
  23. * @param $criteria criteria (TCriteria object) to filter the model (optional)
  24. */
  25. public function __construct($name, $database, $model, $key, $value, $ordercolumn = NULL, TCriteria $criteria = NULL)
  26. {
  27. // executes the parent class constructor
  28. parent::__construct($name);
  29. if (empty($database))
  30. {
  31. throw new Exception(AdiantiCoreTranslator::translate('The parameter (^1) of ^2 is required', 'database', __CLASS__));
  32. }
  33. if (empty($model))
  34. {
  35. throw new Exception(AdiantiCoreTranslator::translate('The parameter (^1) of ^2 is required', 'model', __CLASS__));
  36. }
  37. if (empty($key))
  38. {
  39. throw new Exception(AdiantiCoreTranslator::translate('The parameter (^1) of ^2 is required', 'key', __CLASS__));
  40. }
  41. if (empty($value))
  42. {
  43. throw new Exception(AdiantiCoreTranslator::translate('The parameter (^1) of ^2 is required', 'value', __CLASS__));
  44. }
  45. // carrega objetos do banco de dados
  46. TTransaction::open($database);
  47. // instancia um repositório de Estado
  48. $repository = new TRepository($model);
  49. if (is_null($criteria))
  50. {
  51. $criteria = new TCriteria;
  52. }
  53. $criteria->setProperty('order', isset($ordercolumn) ? $ordercolumn : $key);
  54. // carrega todos objetos
  55. $collection = $repository->load($criteria, FALSE);
  56. // adiciona objetos na combo
  57. if ($collection)
  58. {
  59. $items = array();
  60. foreach ($collection as $object)
  61. {
  62. if(is_array($value))
  63. {
  64. foreach($value as $k => $v)
  65. {
  66. if($k == 0)
  67. {
  68. $items[$object->$key] = $object->$v;
  69. }
  70. else
  71. {
  72. $items[$object->$key] .= ' - '.$object->$v;
  73. }
  74. }
  75. }
  76. else
  77. {
  78. $items[$object->$key] = $object->$value;
  79. }
  80. }
  81. parent::addItems($items);
  82. }
  83. TTransaction::close();
  84. }
  85. }
  86. </code>

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