Conheça  A Ferramenta LowCode mais moderna e veloz para desenvolvimento PHP: Adianti Creator
Erro cortina lateral Pessoal estou tentando fazer um cadastro simples e ainda nao consegui (estou começando no FW) ...
GT
Erro cortina lateral  
Pessoal estou tentando fazer um cadastro simples e ainda nao consegui (estou começando no FW)
 
  1. <?php
  2. class GrupoForm extends TPage
  3. {
  4. private $form;
  5. use Adianti\Base\AdiantiStandardFormTrait;
  6. public function __construct()
  7. {
  8. parent::__construct();
  9. $this->setDatabase('teste');
  10. $this->setActiveRecord('Grupo');
  11. parent::setTargetContainer('adianti_right_panel');
  12. $this->form = new BootstrapFormBuilder;
  13. $this->form->setFormTitle('Grupos');
  14. //$this->form->setClientValidation(true);
  15. $grupo_id = new TEntry('grupo_id');
  16. $descricao= new TEntry('descricao');
  17. $comissao = new Tentry('comissao');
  18. $preco_etiqueta = new TCombo('preco_etiqueta');
  19. $mostra_catalogo = new TCombo('mostra_catalogo');
  20. $carga_tributaria = new TEntry('carga_tributaria');
  21. $max_parcelas = new TEntry('numero_max_parcelas');
  22. $comissao->setNumericMask(2, ',', '.', true);
  23. $carga_tributaria->setNumericMask(2, ',', '.', true);
  24. $grupo_id->setEditable(false);
  25. $items = ['S' => 'Sim','N' => 'Não'];
  26. $preco_etiqueta->addItems($items);
  27. $mostra_catalogo->addItems($items);
  28. $preco_etiqueta->setValue('N');
  29. $mostra_catalogo->setValue('N');
  30. $comissao->setValue(0);
  31. $carga_tributaria->setValue(0);
  32. $max_parcelas->setValue(0);
  33. $this->form->addFields([new TLabel('Código')],[$grupo_id]);
  34. $this->form->addFields([new TLabel('Descrição','red')],[$descricao]);
  35. $this->form->addFields([new TLabel('Max Parcelas')],[$max_parcelas],[new TLabel('Comissão')],[$comissao],[new TLabel('% Carga Tributária')],[$carga_tributaria]);
  36. $this->form->addFields([new TLabel('Preço etiqueta')],[$preco_etiqueta],[new TLabel('Mostra catálogo')],[$mostra_catalogo]);
  37. $descricao->addValidation('Descrição', new TRequiredValidator);
  38. $this->form->addAction('Salvar', new TAction([$this, 'onSave']),'fa:save green');
  39. $this->form->addActionLink('Limpar', new TAction([$this, 'onClear']),'fa:eraser red');
  40. $this->form->addHeaderActionLink('Fechar', new TAction([$this, 'onClose']),'fa:times red');
  41. parent::add($this->form);
  42. }
  43. public static function onClose()
  44. {
  45. TScript::create('Template.closeRightPanel()');
  46. }
  47. /*
  48. public function onEdit($param)
  49. {
  50. try
  51. {
  52. TTransaction::open('teste');
  53. if (isset($param['key']))
  54. {
  55. $key = $param['key'];
  56. $grupo = new Grupo($key);
  57. $this->form->setData($grupo);
  58. }
  59. else
  60. {
  61. $this->form->clear(true); // limpa o formulario e deixa os campos default (true)
  62. }
  63. TTransaction::close();
  64. }
  65. catch (Exception $e)
  66. {
  67. new TMessage('erro',$e->getMessage());
  68. TTransaction::rollback();
  69. }
  70. }
  71. public function onClear()
  72. {
  73. $this->form->clear(true); // limpa o formulario e deixa os campos default (true)
  74. }
  75. public function onSave($param)
  76. {
  77. new TMessage('info','começando');
  78. try
  79. {
  80. TTransaction::open('teste');
  81. $this->form->validate();
  82. $data = $this->form->getData();
  83. $grupo = new Grupo;
  84. $grupo->fromArray( (array) $data);
  85. $grupo->store();
  86. TScript::create('Template.closeRightPanel()');
  87. $this->form->setData($grupo);
  88. TTransaction::close();
  89. }
  90. catch (Exception $e)
  91. {
  92. new TMessage('erro',$e->getMessage());
  93. TTransaction::rollback();
  94. }
  95. }
  96. */
  97. }
  98. No modo normal a gravaçao ocorre sem problemas, quando tento usar CORTINA LATERAL da erro: "O campo descriçao é obrigatorio" e não salva os dados.
  99. Alguem pode me ajudar?

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 (5)


MG

É preciso debugar pra entender.
Veja o conteúdo do form.
No método onSave use var_dump($param) para ver o conteúdo postado.
No seu código existe uma validação definida para o campo descrição.
Se o mesmo for em branco, a regra é aplicada. Me parece correto.
GT

Obrigado pela ajuda Marcelo,
Nao sei se voce observou, mas o problema so ocorre quando uso cortina lateral
MG

Sim. Eu vi.
Estou neste momento migrando uma aplicação de itens de orçamentos com cortina lateral e está tudo em ordem.
Verifique se os dados estão sendo postados corretamente. O var_dump ajuda.
NR

Veja o construtor da classe BootstrapFormBuilder:
 
  1. <?php
  2. public function __construct($name = 'my_form')
  3. ?>

Quando você não informa o nome do formulário ao criar a instância, por padrão é usado "my_form". Usando o recurso de cortina, provavelmente o formulário abaixo dela também possui o mesmo nome e, com isso, os dados do outro formulário devem estar sendo enviados no post.
Sempre informe nome distintos para os forms:
 
  1. <?php
  2. $this->form = new BootstrapFormBuilder('formGrupoCortina');
  3. ?>
GT

Obrigado Natanael, sua observação é precisa. Consegui editar/salvar os dados.
Para encaixar neste mesmo post:
O método onSave é herdado do Trait. Como atualizar o Datagrid (onReload) no momento que clica no botão salvar?
Mais uma vez, obrigado.