Lançado Adianti Framework 8.1!
Clique aqui para saber mais
Erro ao carregar TDBSeekButton Boa dia, Alguém consegue me explicar porque não consigo carregar o campo do tipo TDBSeekButton? Ao meu ver a forma que declarei está correta! Quando clico no botão pra buscar lista as subcategorias mas ao selecionar, a mesma não é populada no TDBSeekButton, como podem ver na imagem em anexo. Forma como estou declarando: ...
RC
Erro ao carregar TDBSeekButton  
Fechado
Boa dia,
Alguém consegue me explicar porque não consigo carregar o campo do tipo TDBSeekButton? Ao meu ver a forma que declarei está correta!

Quando clico no botão pra buscar lista as subcategorias mas ao selecionar, a mesma não é populada no TDBSeekButton, como podem ver na imagem em anexo.

Forma como estou declarando:

  1. <?php
  2.         $criteria = new TCriteria
  3.         $criteria->setProperty('order''name'); 
  4.         
  5.         $multifield_programs = new TMultiField('programs');
  6.         $program_id = new  ">TDBSeekButton('program_id''permission''form_Categoria''Subcategoria''name''program_id''name'$criteria);
  7.         $program_name = new TEntry('name');
  8. ?>


Vou colocar aqui o controller completo e o model subcategoria:

  1. <?php
  2. /**
  3.  * CategoriaFormView Control
  4.  * @author  <Ricelli M. Carvalho>
  5.  */
  6. class CategoriaFormView extends TPage {
  7.     protected $form
  8.     function __construct() {
  9.         parent::__construct();
  10.         $this->form = new TForm('form_Categoria');
  11.         $this->form->class 'tform';
  12.         
  13.         $table = new TTable;
  14.         $table->style 'width: 100%';
  15.         $table->addRowSet(new TLabel('Categorias'), '''''')->class 'tformtitle';
  16.       
  17.         $this->form->add($table);
  18.         $frame_programs = new TFrame(NULL280);
  19.         $frame_programs->setLegend('Subcategorias');
  20.         $frame_programs->style .= ';margin: 15px';
  21.         // create the form fields
  22.         1603 = new TEntry('id');
  23.         $categoria = new TEntry('categoria');
  24.          
  25.         $criteria = new TCriteria
  26.         $criteria->setProperty('order''name'); 
  27.         
  28.         $multifield_programs = new TMultiField('programs');
  29.         $program_id = new  ">TDBSeekButton('program_id''permission''form_Categoria''Subcategoria''name''program_id''name'$criteria);
  30.         $program_name = new TEntry('name');
  31.         $scroll = new TScroll;
  32.         $scroll->setSize(290230);            
  33.         $frame_programs->add($multifield_programs);
  34.         // define the sizes
  35.         1603->setSize(100);
  36.         $categoria->setSize(200);
  37.         $multifield_programs->setHeight(140);
  38.         // outros
  39.         1603->setEditable(false);
  40.         $program_name->setEditable(false);
  41.         // validations
  42.         $categoria->addValidation('categoria', new TRequiredValidator);        
  43.         $program_id->setSize(50);
  44.         $program_name->setSize(300);
  45.         // configuracoes multifield
  46.         $multifield_programs->setClass('Subcategoria');
  47.          $multifield_programs->addField('id',   'ID'$program_id,   50);
  48.         $multifield_programs->addField('name''Subcategoria',   $program_name400);
  49.         $multifield_programs->setOrientation('horizontal');
  50.         // add a row for the field id
  51.         $table->addRowSet(new TLabel('ID:'), 1603);
  52.         $table->addRowSet(new TLabel('Categoria' ': '), $categoria);
  53.         $row $table->addRow();
  54.         $cell $row->addCell($frame_programs);
  55.         $cell->colspan 2;
  56.         // create an action button (save)
  57.         $save_button = new TButton('save');
  58.         $save_button->setAction(new TAction(array($this'onSave')), _t('Save'));
  59.         $save_button->setImage('ico_save.png');
  60.         // create an new button (edit with no parameters)
  61.         $new_button = new TButton('new');
  62.         $new_button->setAction(new TAction(array($this'onEdit')), _t('New'));
  63.         $new_button->setImage('ico_new.png');
  64.         $list_button = new TButton('list');
  65.         $list_button->setAction(new TAction(array('CategoriaDataGrid''onReload')), _t('Back to the listing'));
  66.         $list_button->setImage('ico_datagrid.png');
  67.         // define the form fields
  68.         $this->form->setFields(array(1603$categoria$multifield_programs$save_button$new_button$list_button));
  69.         $buttons = new THBox;
  70.         $buttons->add($save_button);
  71.         $buttons->add($new_button);
  72.         $buttons->add($list_button);
  73.         $row $table->addRow();
  74.         $row->class 'tformaction';
  75.         $cell $row->addCell($buttons);
  76.         $cell->colspan 4;
  77.         $container = new TTable;
  78.         $container->style 'width: 80%';
  79.         $container->addRow()->addCell(new TXMLBreadCrumb('menu.xml''CategoriaFormView'));
  80.         $container->addRow()->addCell($this->form);
  81.         // add the form to the page
  82.         parent::add($container);
  83.     }
  84.     function onSave() {
  85.         try {            
  86.             TTransaction::open('permission');
  87.            
  88.             $object $this->form->getData('Categoria');
  89.             $this->form->validate();
  90.                                     
  91.             if ($object->id) {
  92.                 $object->respalteracao TSession::getValue('username');
  93.                 $object->dataalteracao date("Y-m-d");
  94.             } else {
  95.                 $object->datacadastro date("Y-m-d");
  96.                 $object->respcadastro TSession::getValue('username');
  97.                 $object->respalteracao TSession::getValue('username');
  98.                 $object->dataalteracao date("Y-m-d");
  99.             }
  100.             
  101.             if ($object->programs) {                
  102.                 foreach ($object->programs as $program) {                   
  103.                     $object->addEstoqueCategoriaSubcategoria($program);
  104.                 }
  105.             } else {
  106.                 var_dump("Não entrou!");
  107.                 die();
  108.             }
  109.             $object->store(); 
  110.             $this->form->setData($object);
  111.             TTransaction::close();
  112.             
  113.             new TMessage('info'TAdiantiCoreTranslator::translate('Record saved'));
  114.            
  115.         } catch (Exception $e) { 
  116.      
  117.             new TMessage('error''<b>Error</b> ' $e->getMessage());
  118.            
  119.             TTransaction::rollback();
  120.         }
  121.     }
  122.     function onEdit($param) {
  123.         try {
  124.             if (isset($param['key'])) {
  125.                 
  126.                 $key $param['key'];
  127.                 TTransaction::open('permission');
  128.           
  129.                 $object = new Categoria($key);           
  130.                 $object->programs $object->getEstoqueCategoriaSubcategorias();
  131.                 var_dump($object->programs);
  132.                 $this->form->setData($object);
  133.                
  134.                 TTransaction::close();
  135.             } else {
  136.                 $this->form->clear();
  137.             }
  138.         } catch (Exception $e) { 
  139.            
  140.             new TMessage('error''<b>Error</b> ' $e->getMessage());
  141.           
  142.             TTransaction::rollback();
  143.         }
  144.     }
  145. }
  146. ?>


Model Subcategoria:

  1. <?php
  2. /**
  3.  * Subcategoria Active Record
  4.  * @author  <Ricelli Carvalho>
  5.  */
  6. class Subcategoria extends TRecord
  7. {
  8.     const TABLENAME 'estoque_subcategoria';
  9.     const PRIMARYKEY'id';
  10.     const IDPOLICY =  'max'// {max, serial}
  11.     
  12.     public function __construct(1603 NULL)
  13.     {
  14.         parent::__construct(1603);
  15.         parent::addAttribute('name');        
  16.     }
  17. }
  18. ?>

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


VM

old
  1. <?php $program_id = new  ">TDBSeekButton('program_id', 'permission', 'form_Categoria', 'Subcategoria', 'name', 'program_id', 'name', $criteria);
  2.         $program_name = new TEntry('name'); ?>


new
  1. <?php $program_id = new  ">TDBSeekButton('program_id''permission''form_Categoria''Subcategoria''name''program_id',  'name'$criteria);
  2.         $program_name = new TEntry('name'); ?>
VM

new
$program_id = new TDBSeekButton('program_id', 'permission', 'form_Categoria', 'Subcategoria', 'name', 'program_id', 'name', $criteria);
RC

Não entendi Voltaire. A forma como vc está declarando não difere da forma que eu fiz!
VM

no seu tem:
new ">TDBSeekButton

no meu:
new TDBSeekButton

quando você clica não ta indo para o campo.
RC

Obrigado Voltaire.

Consegui colocar pra funcionar aqui, mas só funcionou assim:
  1. <?php
  2. $program_id = new  ">TDBSeekButton('program_id''permission''form_Categoria''Subcategoria''name''programs_id''programs_name'$criteria);
  3. $program_name = new TEntry('program_name');
  4. ?>


Achei estranho, pois a forma de declarar não está de acordo com a documentação, onde teria que ser assim:
  1. <?php
  2. $program_id = new  ">TDBSeekButton('program_id''permission''form_Categoria''Subcategoria''name''program_id''program_name'$criteria);
  3. $program_name = new TEntry('program_name');
  4. ?>

RC

Esse simbolo ">TDBSeekButton é porque não cabe na mesma linha, quando vou comentar aqui, ai o sistema de comentário coloca dessa forma.
PD

Isso já passou por aqui. Busque por "multifield prefixo" no fórum, veja:
www.adianti.com.br/forum/pt/view_842?tseekbutton-personalizado-no-mu

Os campos da multifield possuem como prefixo o nome do multifield, para evitar conflitos.