EC
SystemGroupForm problemas no enableSearch
Sou novato com o framework e me deparei com um problema que inclusive já existe na classe SystemGroupForm do Template.
Existem 2 TCheckList nessa classe:
1º recebe program_list que adiciona as colunas id e name do modelo SystemProgram, o enableSearch é habilitado para coluna name.
2º recebe user_list que adiciona as colunas id e name do modelo SystemUser o enableSearch também é habilitado para coluna name.
Provavelmente o fato do o enableSearch ser habilitado em colunas com o mesmo nome, apesar de serem modelos diferentes, estão conflitando e só a busca por programas funciona.
Já tentei usar o System::select e mudar com alias o retorno do select mas sem sucesso.
Se alguém poder ajudar com fazer funcionar.
Existem 2 TCheckList nessa classe:
1º recebe program_list que adiciona as colunas id e name do modelo SystemProgram, o enableSearch é habilitado para coluna name.
2º recebe user_list que adiciona as colunas id e name do modelo SystemUser o enableSearch também é habilitado para coluna name.
Provavelmente o fato do o enableSearch ser habilitado em colunas com o mesmo nome, apesar de serem modelos diferentes, estão conflitando e só a busca por programas funciona.
Já tentei usar o System::select e mudar com alias o retorno do select mas sem sucesso.
Se alguém poder ajudar com fazer funcionar.
- <?php
- parent::__construct();
- // creates the form
- $this->form = new BootstrapFormBuilder('form_System_group');
- $this->form->setFormTitle(_t('Group'));
- // create the form fields
- $id = new TEntry('id');
- $name = new TEntry('name');
- // define the sizes
- $id->setSize('30%');
- $name->setSize('70%');
- // validations
- $name->addValidation('name', new TRequiredValidator);
- // outras propriedades
- $id->setEditable(false);
- $this->form->addFields([new TLabel('ID')], [$id]);
- $this->form->addFields([new TLabel(_t('Name'))], [$name]);
- $this->program_list = new TCheckList('program_list');
- $this->program_list->setIdColumn('id');
- $this->program_list->addColumn('id', 'ID', 'center', '10%');
- $col_name = $this->program_list->addColumn('name', _t('Name'), 'left', '50%');
- $col_program = $this->program_list->addColumn('controller', _t('Menu path'), 'left', '40%');
- $col_program->enableAutoHide(500);
- $this->program_list->setHeight(350);
- $this->program_list->makeScrollable();
- $col_name->enableSearch();
- $search_program = $col_name->getInputSearch();
- $search_program->placeholder = _t('Search');
- $search_program->style = 'margin-left: 4px; border-radius: 4px';
- $col_program->setTransformer(function ($value, $object, $row) {
- $menuparser = new TMenuParser('menu.xml');
- $paths = $menuparser->getPath($value);
- if ($paths) {
- return implode(' » ', $paths);
- }
- });
- $this->user_list = new TCheckList('user_list');
- $this->user_list->setIdColumn('id');
- $this->user_list->addColumn('id', 'ID', 'center', '10%');
- $col_user = $this->user_list->addColumn('name', _t('Name'), 'left', '90%');
- $this->user_list->setHeight(350);
- $this->user_list->makeScrollable();
- $col_user->enableSearch();
- $search_user = $col_user->getInputSearch();
- $search_user->placeholder = _t('Search');
- $search_user->style = 'margin-left: 4px; border-radius: 4px';
- $subform = new BootstrapFormBuilder;
- $subform->setProperty('style', 'border:none; box-shadow:none');
- $subform->appendPage(_t('Programs'));
- $subform->addFields([$this->program_list]);
- $subform->appendPage(_t('Users'));
- $subform->addFields([$this->user_list]);
- $this->form->addContent([$subform]);
- TTransaction::open('permission');
- $this->program_list->addItems(SystemProgram::get());
- $this->user_list->addItems(SystemUser::get());
- TTransaction::close();
- $btn = $this->form->addAction(_t('Save'), new TAction(array($this, 'onSave')), 'far:save');
- $btn->class = 'btn btn-sm btn-primary';
- $this->form->addActionLink(_t('Clear'), new TAction(array($this, 'onEdit')), 'fa:eraser red');
- $this->form->addActionLink(_t('Back'), new TAction(array('SystemGroupList', 'onReload')), 'far:arrow-alt-circle-left blue');
- $container = new TVBox;
- $container->style = 'width:100%';
- $container->add(new TXMLBreadCrumb('menu.xml', 'SystemGroupList'));
- $container->add($this->form);
- // add the form to the page
- parent::add($container);
- ?>
Tente o seguinte:
Altere "name" para "name2" na criação da coluna:
No model SystemProgram crie uma função chamada "get_name2":
Nataniel Rabaioli, obrigado! É o mesmo método que o Pablo utiliza nas aulas quando quer pegar informações das tabelas de relacionamento. Show de bola! Já fica o exercício para utilizar esse "hack" para outras ocasiões.