Lançado Adianti Framework 7.6!
Clique aqui para saber mais
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. ...
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.

  1. <?php
  2. class AbaFormContratadas extends TPage{
  3.     private $form;    
  4.     private $list_contratadas;
  5.     private $criteria_contratada;     
  6.     private $empresa_id;
  7.     private $obra_id
  8.     private $criteria_contratada_ids = array();
  9.     use Adianti\Base\AdiantiStandardFormTrait;    
  10.     public function __construct(){
  11.         parent::__construct();
  12.         
  13.         //creates the form
  14.         $this->form = new BootstrapFormBuilder('form_contratadas');   
  15.         $this->form->setProperty('style''margin:0;border:0;padding:0');
  16.         $this->form->setClientValidation(true);                
  17.         
  18.         //fields do form
  19.         $id                        = new TEntry('id[]');
  20.         //filtro para não trazer a mesma empresa no TDBUniqueSearch
  21.         $this->criteria_contratada = new TCriteria();
  22.         //declaro no ObraForm2
  23.         $this->empresa_id TSession::getValue('empresa_id');
  24.         $this->obra_id    TSession::getValue('obra_id');
  25.         TTransaction::open('sgdt');              
  26.             
  27.         $empresa_obra_dados EmpresaObra::where('empresa_id''='$this->empresa_id)
  28.                                                  ->where('obra_id''='$this->obra_id)
  29.                                                  ->load();
  30.         
  31.         $dados_contratada_id = array();
  32.         if ($empresa_obra_dados){          
  33.             foreach ($empresa_obra_dados as $empresa_obra){                
  34.                 $dados_contratada_id[] = $empresa_obra->contratada_id;                                           
  35.             }
  36.             //$this->criteria_contratada->add(new TFilter('id','NOT IN', $dados_contratada_id));
  37.         }
  38.         
  39.         TTransaction::close();
  40.         
  41.         $this->criteria_contratada->add(new TFilter('id''<>'$this->empresa_id));
  42.         //$this->criteria_contratada->add(new TFilter('id', '<>', $this->criteria_contratada_id), TExpression::OR_OPERATOR);
  43.         $this->criteria_contratada->add(//trazer todas a empresas vinculadas a contratante
  44.             new TFilter('id''IN''(SELECT contratada_id FROM empresa_contratante_contratada WHERE contratante_id = '.$this->empresa_id.')')
  45.         );
  46.         //echo $this->criteria_contratada->dump();
  47.                         
  48.         $contratada_id  = new TDBCombo('contratada_id[]''sgdt''Empresa''id''{nome_fantasia} - {cnpj}'null$this->criteria_contratada);
  49.         $contratada_id->addValidation('Selecione a Contratada', new TRequiredValidator);
  50.         $contratada_id->setSize('100%');
  51.         $contratada_id->placeholder 'Entre com a Emmpresa Contratada';
  52.         
  53.         $this->list_contratadas = new TFieldList;
  54.         //$this->list_contratadas->name  = 'list_field_contratadas';
  55.         $this->list_contratadas->width '100%';
  56.         //add fiels ao form        
  57.         $this->list_contratadas->addField('Contratada (*)'$contratada_id, ['width' => '50%']);
  58.         
  59.         $this->form->addContent([$this->list_contratadas]);
  60.         $btn_salvar $this->form->addAction('Salvar', new TAction([$this'onSave']), 'fa:save');
  61.         $btn_salvar->class 'btn btn-sm btn-primary';
  62.         
  63.         //$this->form->addActionLink('Novo',  new TAction([$this, 'onEdit'],['titulo_botao' => 'Cadastrar ', 'empresa_id' => $param['empresa_id']]), 'fa:plus blue');        
  64.         $btn_novo $this->form->addAction('Novo', new TAction([$this'onEdit'],['titulo_botao' => 'Cadastrar ']), 'fa:plus blue');                 
  65.         //vertical box container
  66.         $vbox          = new TVBox;
  67.         $vbox->style   'width: 100%;padding:0';
  68.         $vbox->add($this->form);
  69.         
  70.         parent::add($vbox);         
  71.     }
  72.     
  73.     public function onClear($param){
  74.         //$this->form->clear();
  75.         $this->list_contratadas->addHeader();
  76.         $this->list_contratadas->addDetail( new stdClass );
  77.         $this->list_contratadas->addCloneAction();
  78.     }
  79.     public function onSave($param){        
  80.         try{            
  81.             TTransaction::open('sgdt');
  82.             // TTransaction::dump();
  83.             
  84.             $this->form->validate(); // validate form data
  85.             
  86.             EmpresaObra::where('empresa_id''='$this->empresa_id)->delete();
  87.             
  88.             if (!empty($param['contratada_id'])){
  89.                 foreach ($param['contratada_id'] as $row => $contratada){
  90.                     if ($contratada){
  91.                         $empresa_obra = new EmpresaObra;
  92.                         $empresa_obra->contratada_id    $contratada;
  93.                         $empresa_obra->empresa_id       $this->empresa_id;
  94.                         $empresa_obra->obra_id          $this->obra_id;                        
  95.                         
  96.                         $empresa_obra->store();
  97.                     }
  98.                 }
  99.             }
  100.             $data = new stdClass;
  101.             $data->contratada_id $empresa_obra->contratada_id;
  102.             TForm::sendData('form_contratadas'$data);
  103.             TTransaction::close();
  104.         
  105.             new TMessage('info''Registro salvo com sucesso');                                  
  106.         } catch (Exception $e){
  107.             $this->form->setData($this->form->getData()); // keep form data
  108.             TTransaction::rollback(); // undo all pending operations
  109.             new TMessage('error'$e->getMessage());
  110.         }
  111.     }
  112.     public function onEdit($param){       
  113.         try {            
  114.             //se tem obra pode editar gerenciar contratadas
  115.             if (isset($param['key'])){ //key = obra_id
  116.                 
  117.                 $obra_id $param['key'];
  118.                 
  119.                 TTransaction::open('sgdt');
  120.                 //TTransaction::dump();                                
  121.                 $empresa_obra_dados EmpresaObra::where('empresa_id''='$param['empresa_id'])
  122.                                                  ->where('obra_id''='$obra_id)->load();                                            
  123.                 if ($empresa_obra_dados){
  124.                     
  125.                     $this->list_contratadas->addHeader();
  126.                     foreach ($empresa_obra_dados as $empresa_obra){
  127.                         $objeto_empresa_obra = new stdClass;
  128.                         $objeto_empresa_obra->empresa_id       $empresa_obra->empresa_id;
  129.                         $objeto_empresa_obra->obra_id          $empresa_obra->obra_id//key = obra_id
  130.                         $objeto_empresa_obra->contratada_id    $empresa_obra->contratada_id;
  131.                         $this->list_contratadas->addDetail($objeto_empresa_obra);                                           
  132.                     }
  133.                     $this->list_contratadas->addCloneAction();
  134.                 }
  135.                 else{
  136.                     $empresaobra = new EmpresaObra();
  137.                     
  138.                     $empresaobra->empresa_id $param['empresa_id'];
  139.                     $empresaobra->obra_id    $obra_id;
  140.                     $this->list_contratadas->addHeader();                
  141.                     $this->list_contratadas->addDetail(new stdClass);                   
  142.                     $this->list_contratadas->addCloneAction();                    
  143.                 }                                                
  144.                 TTransaction::close();
  145.             }else{
  146.                 $this->onClear($param);
  147.                 
  148.                     // TTransaction::open('sgdt');
  149.                     // //TTransaction::dump();
  150.                     // $empresaobra = new EmpresaObra((int) $key);
  151.                     // $empresaobra->empresa_id = $param['empresa_id'];
  152.                     // $this->form->setData($empresaobra);
  153.                     
  154.                     // TForm::sendData('form_contratadas', $obra);
  155.                     // TTransaction::close();
  156.             }
  157.         } catch (Exception $e){
  158.             new TMessage('error'$e->getMessage());
  159.             TTransaction::rollback();
  160.         }
  161.     }        
  162. }
  163. ?>

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (2)


NR

Passe o parâmetro "static" à action de salvar:
  1. <?php
  2. //$btn_salvar = $this->form->addAction('Salvar', new TAction([$this, 'onSave']), 'fa:save');
  3.   $btn_salvar $this->form->addAction('Salvar', new TAction([$this'onSave'],['static'=>1]), 'fa:save');
  4. ?>
AW

Foi nataniel.

Obrigado abrasss.