AW
Depois de salvar os itens do fieldlist somem
Olá pessoal.
Não estou conseguindo deixar o form preechido com os fieldlist depois que salva. Quando salva some o field list.
O cadastro é realizado com sucesso e só depois que entro no form novamente que aparece os registro que inseri.
Não estou conseguindo deixar o form preechido com os fieldlist depois que salva. Quando salva some o field list.
O cadastro é realizado com sucesso e só depois que entro no form novamente que aparece os registro que inseri.
- <?php
- class AbaFormContratadas extends TPage{
- private $form;
- private $list_contratadas;
- private $criteria_contratada;
- private $empresa_id;
- private $obra_id;
- private $criteria_contratada_ids = array();
- use Adianti\Base\AdiantiStandardFormTrait;
- public function __construct(){
- parent::__construct();
- //creates the form
- $this->form = new BootstrapFormBuilder('form_contratadas');
- $this->form->setProperty('style', 'margin:0;border:0;padding:0');
- $this->form->setClientValidation(true);
- //fields do form
- $id = new TEntry('id[]');
- //filtro para não trazer a mesma empresa no TDBUniqueSearch
- $this->criteria_contratada = new TCriteria();
- //declaro no ObraForm2
- $this->empresa_id = TSession::getValue('empresa_id');
- $this->obra_id = TSession::getValue('obra_id');
- TTransaction::open('sgdt');
- $empresa_obra_dados = EmpresaObra::where('empresa_id', '=', $this->empresa_id)
- ->where('obra_id', '=', $this->obra_id)
- ->load();
- $dados_contratada_id = array();
- if ($empresa_obra_dados){
- foreach ($empresa_obra_dados as $empresa_obra){
- $dados_contratada_id[] = $empresa_obra->contratada_id;
- }
- //$this->criteria_contratada->add(new TFilter('id','NOT IN', $dados_contratada_id));
- }
- TTransaction::close();
- $this->criteria_contratada->add(new TFilter('id', '<>', $this->empresa_id));
- //$this->criteria_contratada->add(new TFilter('id', '<>', $this->criteria_contratada_id), TExpression::OR_OPERATOR);
- $this->criteria_contratada->add(//trazer todas a empresas vinculadas a contratante
- new TFilter('id', 'IN', '(SELECT contratada_id FROM empresa_contratante_contratada WHERE contratante_id = '.$this->empresa_id.')')
- );
- //echo $this->criteria_contratada->dump();
- $contratada_id = new TDBCombo('contratada_id[]', 'sgdt', 'Empresa', 'id', '{nome_fantasia} - {cnpj}', null, $this->criteria_contratada);
- $contratada_id->addValidation('Selecione a Contratada', new TRequiredValidator);
- $contratada_id->setSize('100%');
- $contratada_id->placeholder = 'Entre com a Emmpresa Contratada';
- $this->list_contratadas = new TFieldList;
- //$this->list_contratadas->name = 'list_field_contratadas';
- $this->list_contratadas->width = '100%';
- //add fiels ao form
- $this->list_contratadas->addField('Contratada (*)', $contratada_id, ['width' => '50%']);
- $this->form->addContent([$this->list_contratadas]);
- $btn_salvar = $this->form->addAction('Salvar', new TAction([$this, 'onSave']), 'fa:save');
- $btn_salvar->class = 'btn btn-sm btn-primary';
- //$this->form->addActionLink('Novo', new TAction([$this, 'onEdit'],['titulo_botao' => 'Cadastrar ', 'empresa_id' => $param['empresa_id']]), 'fa:plus blue');
- $btn_novo = $this->form->addAction('Novo', new TAction([$this, 'onEdit'],['titulo_botao' => 'Cadastrar ']), 'fa:plus blue');
- //vertical box container
- $vbox = new TVBox;
- $vbox->style = 'width: 100%;padding:0';
- $vbox->add($this->form);
- parent::add($vbox);
- }
- public function onClear($param){
- //$this->form->clear();
- $this->list_contratadas->addHeader();
- $this->list_contratadas->addDetail( new stdClass );
- $this->list_contratadas->addCloneAction();
- }
- public function onSave($param){
- try{
- TTransaction::open('sgdt');
- // TTransaction::dump();
- $this->form->validate(); // validate form data
- EmpresaObra::where('empresa_id', '=', $this->empresa_id)->delete();
- if (!empty($param['contratada_id'])){
- foreach ($param['contratada_id'] as $row => $contratada){
- if ($contratada){
- $empresa_obra = new EmpresaObra;
- $empresa_obra->contratada_id = $contratada;
- $empresa_obra->empresa_id = $this->empresa_id;
- $empresa_obra->obra_id = $this->obra_id;
- $empresa_obra->store();
- }
- }
- }
- $data = new stdClass;
- $data->contratada_id = $empresa_obra->contratada_id;
- TForm::sendData('form_contratadas', $data);
- TTransaction::close();
- new TMessage('info', 'Registro salvo com sucesso');
- } catch (Exception $e){
- $this->form->setData($this->form->getData()); // keep form data
- TTransaction::rollback(); // undo all pending operations
- new TMessage('error', $e->getMessage());
- }
- }
- public function onEdit($param){
- try {
- //se tem obra pode editar gerenciar contratadas
- if (isset($param['key'])){ //key = obra_id
- $obra_id = $param['key'];
- TTransaction::open('sgdt');
- //TTransaction::dump();
- $empresa_obra_dados = EmpresaObra::where('empresa_id', '=', $param['empresa_id'])
- ->where('obra_id', '=', $obra_id)->load();
- if ($empresa_obra_dados){
- $this->list_contratadas->addHeader();
- foreach ($empresa_obra_dados as $empresa_obra){
- $objeto_empresa_obra = new stdClass;
- $objeto_empresa_obra->empresa_id = $empresa_obra->empresa_id;
- $objeto_empresa_obra->obra_id = $empresa_obra->obra_id; //key = obra_id
- $objeto_empresa_obra->contratada_id = $empresa_obra->contratada_id;
- $this->list_contratadas->addDetail($objeto_empresa_obra);
- }
- $this->list_contratadas->addCloneAction();
- }
- else{
- $empresaobra = new EmpresaObra();
- $empresaobra->empresa_id = $param['empresa_id'];
- $empresaobra->obra_id = $obra_id;
- $this->list_contratadas->addHeader();
- $this->list_contratadas->addDetail(new stdClass);
- $this->list_contratadas->addCloneAction();
- }
- TTransaction::close();
- }else{
- $this->onClear($param);
- // TTransaction::open('sgdt');
- // //TTransaction::dump();
- // $empresaobra = new EmpresaObra((int) $key);
- // $empresaobra->empresa_id = $param['empresa_id'];
- // $this->form->setData($empresaobra);
- // TForm::sendData('form_contratadas', $obra);
- // TTransaction::close();
- }
- } catch (Exception $e){
- new TMessage('error', $e->getMessage());
- TTransaction::rollback();
- }
- }
- }
- ?>
Passe o parâmetro "static" à action de salvar:
Foi nataniel.
Obrigado abrasss.