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:
Vou colocar aqui o controller completo e o model subcategoria:
Model Subcategoria:
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:
- <?php
- $criteria = new TCriteria;
- $criteria->setProperty('order', 'name');
- $multifield_programs = new TMultiField('programs');
- $program_id = new ">TDBSeekButton('program_id', 'permission', 'form_Categoria', 'Subcategoria', 'name', 'program_id', 'name', $criteria);
- $program_name = new TEntry('name');
- ?>
Vou colocar aqui o controller completo e o model subcategoria:
- <?php
- /**
- * CategoriaFormView Control
- * @author <Ricelli M. Carvalho>
- */
- class CategoriaFormView extends TPage {
- protected $form;
- function __construct() {
- parent::__construct();
- $this->form = new TForm('form_Categoria');
- $this->form->class = 'tform';
- $table = new TTable;
- $table->style = 'width: 100%';
- $table->addRowSet(new TLabel('Categorias'), '', '', '')->class = 'tformtitle';
- $this->form->add($table);
- $frame_programs = new TFrame(NULL, 280);
- $frame_programs->setLegend('Subcategorias');
- $frame_programs->style .= ';margin: 15px';
- // create the form fields
- 1603 = new TEntry('id');
- $categoria = new TEntry('categoria');
- $criteria = new TCriteria;
- $criteria->setProperty('order', 'name');
- $multifield_programs = new TMultiField('programs');
- $program_id = new ">TDBSeekButton('program_id', 'permission', 'form_Categoria', 'Subcategoria', 'name', 'program_id', 'name', $criteria);
- $program_name = new TEntry('name');
- $scroll = new TScroll;
- $scroll->setSize(290, 230);
- $frame_programs->add($multifield_programs);
- // define the sizes
- 1603->setSize(100);
- $categoria->setSize(200);
- $multifield_programs->setHeight(140);
- // outros
- 1603->setEditable(false);
- $program_name->setEditable(false);
- // validations
- $categoria->addValidation('categoria', new TRequiredValidator);
- $program_id->setSize(50);
- $program_name->setSize(300);
- // configuracoes multifield
- $multifield_programs->setClass('Subcategoria');
- $multifield_programs->addField('id', 'ID', $program_id, 50);
- $multifield_programs->addField('name', 'Subcategoria', $program_name, 400);
- $multifield_programs->setOrientation('horizontal');
- // add a row for the field id
- $table->addRowSet(new TLabel('ID:'), 1603);
- $table->addRowSet(new TLabel('Categoria' . ': '), $categoria);
- $row = $table->addRow();
- $cell = $row->addCell($frame_programs);
- $cell->colspan = 2;
- // create an action button (save)
- $save_button = new TButton('save');
- $save_button->setAction(new TAction(array($this, 'onSave')), _t('Save'));
- $save_button->setImage('ico_save.png');
- // create an new button (edit with no parameters)
- $new_button = new TButton('new');
- $new_button->setAction(new TAction(array($this, 'onEdit')), _t('New'));
- $new_button->setImage('ico_new.png');
- $list_button = new TButton('list');
- $list_button->setAction(new TAction(array('CategoriaDataGrid', 'onReload')), _t('Back to the listing'));
- $list_button->setImage('ico_datagrid.png');
- // define the form fields
- $this->form->setFields(array(1603, $categoria, $multifield_programs, $save_button, $new_button, $list_button));
- $buttons = new THBox;
- $buttons->add($save_button);
- $buttons->add($new_button);
- $buttons->add($list_button);
- $row = $table->addRow();
- $row->class = 'tformaction';
- $cell = $row->addCell($buttons);
- $cell->colspan = 4;
- $container = new TTable;
- $container->style = 'width: 80%';
- $container->addRow()->addCell(new TXMLBreadCrumb('menu.xml', 'CategoriaFormView'));
- $container->addRow()->addCell($this->form);
- // add the form to the page
- parent::add($container);
- }
- function onSave() {
- try {
- TTransaction::open('permission');
- $object = $this->form->getData('Categoria');
- $this->form->validate();
- if ($object->id) {
- $object->respalteracao = TSession::getValue('username');
- $object->dataalteracao = date("Y-m-d");
- } else {
- $object->datacadastro = date("Y-m-d");
- $object->respcadastro = TSession::getValue('username');
- $object->respalteracao = TSession::getValue('username');
- $object->dataalteracao = date("Y-m-d");
- }
- if ($object->programs) {
- foreach ($object->programs as $program) {
- $object->addEstoqueCategoriaSubcategoria($program);
- }
- } else {
- var_dump("Não entrou!");
- die();
- }
- $object->store();
- $this->form->setData($object);
- TTransaction::close();
- new TMessage('info', TAdiantiCoreTranslator::translate('Record saved'));
- } catch (Exception $e) {
- new TMessage('error', '<b>Error</b> ' . $e->getMessage());
- TTransaction::rollback();
- }
- }
- function onEdit($param) {
- try {
- if (isset($param['key'])) {
- $key = $param['key'];
- TTransaction::open('permission');
- $object = new Categoria($key);
- $object->programs = $object->getEstoqueCategoriaSubcategorias();
- var_dump($object->programs);
- $this->form->setData($object);
- TTransaction::close();
- } else {
- $this->form->clear();
- }
- } catch (Exception $e) {
- new TMessage('error', '<b>Error</b> ' . $e->getMessage());
- TTransaction::rollback();
- }
- }
- }
- ?>
Model Subcategoria:
- <?php
- /**
- * Subcategoria Active Record
- * @author <Ricelli Carvalho>
- */
- class Subcategoria extends TRecord
- {
- const TABLENAME = 'estoque_subcategoria';
- const PRIMARYKEY= 'id';
- const IDPOLICY = 'max'; // {max, serial}
- public function __construct(1603 = NULL)
- {
- parent::__construct(1603);
- parent::addAttribute('name');
- }
- }
- ?>
old
new
new
$program_id = new TDBSeekButton('program_id', 'permission', 'form_Categoria', 'Subcategoria', 'name', 'program_id', 'name', $criteria);
Não entendi Voltaire. A forma como vc está declarando não difere da forma que eu fiz!
no seu tem:
new ">TDBSeekButton
no meu:
new TDBSeekButton
quando você clica não ta indo para o campo.
Obrigado Voltaire.
Consegui colocar pra funcionar aqui, mas só funcionou assim:
Achei estranho, pois a forma de declarar não está de acordo com a documentação, onde teria que ser assim:
Esse simbolo ">TDBSeekButton é porque não cabe na mesma linha, quando vou comentar aqui, ai o sistema de comentário coloca dessa forma.
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.