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

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