Lançado Adianti Framework 7.6!
Clique aqui para saber mais
getData() do formulário não traz nada Pessoal me ajudem nesse problema? Estou criando um layout com tables, adicionando os campos da seguinte forma: $table1->addRowSet($TCampo->descricao, $obj); porem... no meu OnSearch... na linha: $data = $this->form->getData(); $data vem vazio, ou seja ele não encontra os campos, porem quando adiciona os campos via addQuickField o getData() funciona... $this->form->addQuickField($T...
AT
getData() do formulário não traz nada  
Fechado
Pessoal me ajudem nesse problema?

Estou criando um layout com tables, adicionando os campos da seguinte forma:

$table1->addRowSet($TCampo->descricao, $obj);

porem... no meu OnSearch... na linha:
$data = $this->form->getData();

$data vem vazio, ou seja ele não encontra os campos, porem quando adiciona os campos via addQuickField o getData() funciona...

$this->form->addQuickField($TCampo->descricao, $obj, $Tamanho);

Qual será o problema... sou iniciante em PHP rsrs...

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


JN

Boa tarde Adriano,

Posta o código completo.
FC

falta colocar as variavéis nessa linha:

$this->form->setFields(

Confere ai !!!
AT

Oi Felipe, eu tenho essa linha também $this->form->setFields($array_fields);

Meus campos são criados em tempo de interpretação pois é um form customizável, vou postar o código inteiro para vocês:

  1. <?php
  1. <?php
  2. /**
  3.  * ArquivosDetalheFormList Registration
  4.  * Adriano Ch. Teodoro
  5.  */
  6.  
  7. function getValue_cad($param)
  8. {
  9.     return TForm::getData('form_ArquivosDetalhe'$param);
  10. }
  11.  
  12. class ArquivosDetalheFormList extends TStandardFormList
  13. {
  14.     protected $form;
  15.     protected $datagrid
  16.     protected $pageNavigation;
  17.     
  18.     function __construct()
  19.     {
  20.         // security check
  21.         if (TSession::getValue('logged') !== TRUE)
  22.         {
  23.             throw new Exception(_t('Not logged'));
  24.         }
  25.         parent::__construct();
  26.         
  27.         parent::setDatabase('conexao');           
  28.         parent::setActiveRecord('ArquivosDetalhe');   
  29.         parent::setDefaultOrder('id_arquivos_detalhe''asc');        
  30.        
  31.         $this->form = new TQuickForm('form_ArquivosDetalhe');
  32.         $this->form->class 'tform';
  33.         $this->form->style 'margin-top:15px';
  34.         
  35.         /* Campos */
  36.         $id_arquivos_detalhe = new TEntry('id_arquivos_detalhe');
  37.         /* Adiciona Campos */
  38.         //$this->form->addQuickField('ID', $id_arquivos_detalhe,  100);
  39.         /* Criar campos cadastrados em customização */        
  40.         TTransaction::open('conexao'); 
  41.         
  42.         $whereCampos = new TCriteria;
  43.         $whereCampos->add(new TFilter('filtro','=','S'));
  44.         $whereCampos->setProperty('order','id_campo');
  45.         
  46.         $Repository = new TRepository('Campos');
  47.         $TCampos $Repository->load($whereCampos);       
  48.        
  49.         $array_fields = array();
  50.         $array_fields[] = $id_arquivos_detalhe;
  51.          
  52.         //Tabelas
  53.         $table  = new TTable;
  54.         $table1 = new TTable;
  55.         $table2 = new TTable;
  56.         
  57.         $table->border      '0';
  58.         $table->cellpadding '4';
  59.         $table->style       'border-collapse:collapse;'
  60.         
  61.         $table1->border      '0';
  62.         $table1->cellpadding '2';
  63.         $table1->style       'border-collapse:collapse;'
  64.         $table2->border      '0';
  65.         $table2->cellpadding '2';
  66.         $table2->style       'border-collapse:collapse;'
  67.         
  68.         $row $table->addRow();
  69.         $row->addCell($table1);
  70.         $row->addCell($table2);
  71.         
  72.         $Tamanho 400
  73.         $Coluna  1;
  74.         foreach ($TCampos as $TCampo)
  75.         {
  76.             if ($TCampo->tipo == 'TEXTO'
  77.             {
  78.                 $obj = new TEntry($TCampo->nome);
  79.                 //$this->form->addQuickField($TCampo->descricao, $obj, $Tamanho);
  80.                 
  81.                 if ($Coluna == 1)
  82.                 {
  83.                     $table1->addRowSet($TCampo->descricao$obj);
  84.                     //$row=$table1->addRow();
  85.                     //$row->addCell($TCampo->descricao);
  86.                     //$row->addCell($obj); 
  87.                     $Coluna 2;
  88.                 }
  89.                 else
  90.                 {
  91.                     $table2->addRowSet($TCampo->descricao$obj);
  92.                     $Coluna 1;                
  93.                 }
  94.             }
  95.             else
  96.             if ($TCampo->tipo == 'LISTA'
  97.             {
  98.                 $obj = new TCombo($TCampo->nome);
  99.                 $obj->setSize(200 15);
  100.                 
  101.                 $whereLista = new TCriteria;
  102.                 $whereLista->add(new TFilter('id_campo','=',$TCampo->id_campo));
  103.                 $whereLista->setProperty('order','valor_lista');
  104.                  
  105.                 $RepositoryLista = new TRepository('CamposLista');
  106.                 $TLista $RepositoryLista->load($whereLista);       
  107.                  
  108.                 $ItensDaLista = array(); 
  109.                 foreach ($TLista as $ItemLista)
  110.                 {
  111.                     $ItensDaLista[$ItemLista->valor_lista] = $ItemLista->valor_lista
  112.                 }
  113.                 $obj->addItems($ItensDaLista);        
  114.                 //$this->form->addQuickField($TCampo->descricao, $obj, $Tamanho + 15);
  115.                 if ($Coluna == 1)
  116.                 {
  117.                     $table1->addRowSet($TCampo->descricao$obj);
  118.                     $Coluna 2;
  119.                 }
  120.                 else
  121.                 {
  122.                     $table2->addRowSet($TCampo->descricao$obj);
  123.                     $Coluna 1;                
  124.                 }
  125.             }
  126.             else
  127.             if ($TCampo->tipo == 'NUMERICO'
  128.             {
  129.                 $obj = new TEntry($TCampo->nome);
  130.                 $obj->addValidation($TCampo->descricao, new TNumericValidator);
  131.                 //$this->form->addQuickField($TCampo->descricao, $obj, $Tamanho);
  132.                 
  133.                 if ($Coluna == 1)
  134.                 {
  135.                     $table1->addRowSet($TCampo->descricao$obj);
  136.                     $Coluna 2;
  137.                 }
  138.                 else
  139.                 {
  140.                     $table2->addRowSet($TCampo->descricao$obj);
  141.                     $Coluna 1;                
  142.                 }
  143.             }
  144.             else
  145.             if ($TCampo->tipo == 'MONETARIO'
  146.             {
  147.                 $obj = new TEntry($TCampo->nome);
  148.                 //$this->form->addQuickField($TCampo->descricao, $obj, $Tamanho);
  149.                 
  150.                 if ($Coluna == 1)
  151.                 {
  152.                     $table1->addRowSet($TCampo->descricao$obj);
  153.                     $Coluna 2;
  154.                 }
  155.                 else
  156.                 {
  157.                     $table2->addRowSet($TCampo->descricao$obj);
  158.                     $Coluna 1;                
  159.                 }
  160.             }
  161.             else
  162.             if ($TCampo->tipo == 'LOGICO'
  163.             {
  164.                 $itens = array();
  165.                 $itens['S'] = 'Sim';
  166.                 $itens['N'] = 'Não';
  167.                 $itens['T'] = 'Todos';
  168.                 $obj = new TRadioGroup($TCampo->nome);
  169.                 $obj->setLayout('horizontal');
  170.                 $obj->addItems($itens);
  171.                 
  172.                 //$this->form->addQuickField($TCampo->descricao, $obj, $Tamanho);
  173.                 if ($Coluna == 1)
  174.                 {
  175.                     $table1->addRowSet($TCampo->descricao$obj);
  176.                     $Coluna 2;
  177.                 }
  178.                 else
  179.                 {
  180.                     $table2->addRowSet($TCampo->descricao$obj);
  181.                     $Coluna 1;                
  182.                 }
  183.             }
  184.             else
  185.             if (strtoupper($TCampo->tipo) == 'DATA'
  186.             {
  187.                 $obj = new TDate($TCampo->nome);
  188.                 $obj->SetMask('dd/mm/yyyy');
  189.                 //$this->form->addQuickField($TCampo->descricao, $obj, 80);
  190.                 if ($Coluna == 1)
  191.                 {
  192.                     $table1->addRowSet($TCampo->descricao$obj);
  193.                     $Coluna 2;
  194.                 }
  195.                 else
  196.                 {
  197.                     $table2->addRowSet($TCampo->descricao$obj);
  198.                     $Coluna 1;                
  199.                 }
  200.               
  201.                 sleep(1);
  202.             }
  203.             
  204.             $array_fields[] = $obj
  205.         }       
  206.         
  207.         TTransaction::close();
  208.         
  209.         /* Ações */
  210.         $this->form->addQuickAction(_t('Search'), new TAction(array($this'onSearch')), 'ico_find.png');
  211.         $this->form->addQuickAction(_t('New'), new TAction(array('ArquivosDetalheForm''onEdit')), 'ico_new.png');
  212.         
  213.         $this->form->setFields($array_fields);
  214.         /* Criação Datagrid */
  215.         $this->datagrid = new TQuickGrid;
  216.         $this->datagrid->setHeight(320);
  217.         
  218.         /* Criação Colunas do Datagrid */
  219.         $id_arquivos_detalhe $this->datagrid->addQuickColumn('ID''id_arquivos_detalhe''left'100);
  220.         TTransaction::open('conexao'); 
  221.         
  222.         $whereCampos = new TCriteria;
  223.         $whereCampos->add(new TFilter('visivel','=','S'));
  224.         
  225.         $Repository = new TRepository('Campos');
  226.         $TCampos $Repository->load($whereCampos);       
  227.         
  228.         foreach ($TCampos as $TCampo)
  229.         {
  230.             if (strtoupper($TCampo->tipo) == 'DATA'
  231.             {
  232.                 
  233.                 /* Codificação para formatar datas no padrão Brasileiro */
  234.                 $transf_date = new TDataGridColumn($TCampo->nome$TCampo->descricao'left'80);
  235.                 $transf_date->setTransformer(array($this'formatDate'));
  236.                 $this->datagrid->addColumn($transf_date);
  237.                 
  238.             }
  239.             else
  240.             {
  241.                 $this->datagrid->addQuickColumn($TCampo->descricao$TCampo->nome'left'$Tamanho);
  242.             }
  243.         }       
  244.         TTransaction::close();
  245.         /* Criação das Actions */
  246.         $arquivos_action   = new TDataGridAction(array($this'onArquivos'));
  247.         $this->datagrid->addQuickAction(('Arquivos'), $arquivos_action'id_arquivos_detalhe''folder.png');
  248.         $edit_action   = new TDataGridAction(array('ArquivosDetalheForm''onEdit'));
  249.         $this->datagrid->addQuickAction(_t('Edit'), $edit_action'id_arquivos_detalhe''ico_edit.png');
  250.         $delete_action = new TDataGridAction(array($this'onDelete'));        
  251.         $this->datagrid->addQuickAction(_t('Delete'), $delete_action'id_arquivos_detalhe''ico_delete.png');
  252.         
  253.         /* Cria Model Datagrid */
  254.         $this->datagrid->createModel();
  255.         
  256.         /* Criação do Page Navigation */
  257.         $this->pageNavigation = new TPageNavigation;
  258.         $this->pageNavigation->setAction(new TAction(array($this'onReload')));
  259.         $this->pageNavigation->setWidth($this->datagrid->getWidth());
  260.         
  261.         /* Criação do PageContainer */
  262.         $container = new TVBox;
  263.         $container->style 'margin-top:-30px';
  264.         $container->add(new TXMLBreadCrumb('menu.xml'__CLASS__));
  265.         $container->add($table);
  266.         //$this->form->add($table);
  267.         $container->add($this->form);
  268.         $container->add($this->datagrid);
  269.         $container->add($this->pageNavigation);
  270.         
  271.         parent::add($container);
  272.     }
  273.     
  274.     function onArquivos($param)
  275.     {
  276.     
  277.         $key $param['key'];
  278.         
  279.         TSession::setValue('id_arquivos_detalhe',$key);
  280.         TTransaction::close();
  281.         TSession::setValue('Arquivos_filter',new TFilter('id_arquivos_detalhe','=',$key));
  282.                 
  283.         TApplication::loadPage('ArquivosList''onReload'null);        
  284.     
  285.     }
  286.     
  287.     public function formatDate($transf_date$object)
  288.     {
  289.         if ($transf_date <> null)
  290.         {
  291.         
  292.             $date = new DateTime($transf_date);
  293.             return $date->format('d/m/Y');
  294.                  
  295.         }
  296.         else
  297.         {
  298.             return null;
  299.         }
  300.                 
  301.     }
  302.     
  303.     function onSearch()
  304.     {
  305.         
  306.         $data $this->form->getData();
  307.               
  308.         $filter = array();
  309.         var_dump($data);
  310.         
  311.         TTransaction::open('conexao'); 
  312.         
  313.         $whereCampos = new TCriteria;
  314.         $whereCampos->add(new TFilter('filtro','=','S'));
  315.         
  316.         $Repository = new TRepository('Campos');
  317.         $TCampos $Repository->load($whereCampos);       
  318.        
  319.         /* Limpa Valores das Sessões */
  320.         foreach ($TCampos as $TCampo)
  321.         {
  322.             TSession::setValue($TCampo->nome,'');
  323.             TSession::setValue($TCampo->nome.'_filter','');
  324.         }       
  325.         /* Converte objeto sdtClass em array */
  326.         $valor get_object_vars($data);
  327.         
  328.         foreach ($TCampos as $TCampo)
  329.         {
  330.                         
  331.             $locate $valor[$TCampo->nome];
  332.             
  333.             if ($locate
  334.             {
  335.                 TSession::setValue($TCampo->nome,$locate);
  336.                 
  337.                 /* Filtros */
  338.                 if ($TCampo->tipo == 'TEXTO'
  339.                 {
  340.                     $filter = new TFilter($TCampo->nome'like'"%{$locate}%");
  341.                     TSession::setValue($TCampo->nome.'_filter'$filter);
  342.                     TSession::setValue($TCampo->nome$locate);
  343.                 }
  344.                 else
  345.                 if ($TCampo->tipo == 'LISTA'
  346.                 {
  347.                     $filter = new TFilter($TCampo->nome'='"{$locate}");
  348.                     TSession::setValue($TCampo->nome.'_filter'$filter);
  349.                     TSession::setValue($TCampo->nome$locate);
  350.                 }
  351.                 else
  352.                 if ($TCampo->tipo == 'NUMERICO'
  353.                 {
  354.                     $filter = new TFilter($TCampo->nome'='"{$locate}");
  355.                     TSession::setValue($TCampo->nome.'_filter'$filter);
  356.                     TSession::setValue($TCampo->nome$locate);
  357.                 }
  358.                 else
  359.                 if ($TCampo->tipo == 'MONETARIO'
  360.                 {
  361.                     $filter = new TFilter($TCampo->nome'='"{$locate}");
  362.                     TSession::setValue($TCampo->nome.'_filter'$filter);
  363.                     TSession::setValue($TCampo->nome$locate);
  364.                 }
  365.                 else
  366.                 if ($TCampo->tipo == 'LOGICO'
  367.                 {
  368.                     /* Se diferente de todos, add filter */
  369.                     if ($locate <> 'T')
  370.                     {
  371.                     
  372.                         if ($locate == 'S')
  373.                         {
  374.                             $logico 'SIM';
  375.                         }
  376.                         else
  377.                         if ($locate == 'N')
  378.                         {
  379.                             $logico 'NAO';
  380.                         }
  381.                         
  382.                         $filter = new TFilter($TCampo->nome'='"{$logico}");
  383.                         TSession::setValue($TCampo->nome.'_filter'$filter);
  384.                         TSession::setValue($TCampo->nome$logico);
  385.                         
  386.                     }
  387.                 }
  388.                 else
  389.                 if ($TCampo->tipo == 'DATA'
  390.                 {
  391.                     $filter = new TFilter($TCampo->nome'='"{$locate}");
  392.                     TSession::setValue($TCampo->nome.'_filter'$filter);
  393.                     TSession::setValue($TCampo->nome$locate);
  394.                 }
  395.                 
  396.             }                
  397.         }       
  398.         TTransaction::close();
  399.         
  400.         $this->form->setData($data);
  401.         
  402.         $param = array();
  403.         $param['offset']     = 0;
  404.         $param['first_page'] = 1;
  405.         $this->onReload($param);   
  406.         
  407.     }
  408.     
  409.     function onReload($param NULL)
  410.     {
  411.     
  412.         try
  413.         {
  414.         
  415.             TTransaction::open('conexao');
  416.             
  417.             $repository = new TRepository('ArquivosDetalhe');
  418.             $limit 10;
  419.             
  420.             $criteria = new TCriteria;
  421.             
  422.             /* Ordenação Default */
  423.             if (empty($param['order']))
  424.             {
  425.                 $param['order']     = 'id_arquivos_detalhe';
  426.                 $param['direction'] = 'asc';
  427.             }
  428.             
  429.             $criteria->setProperties($param);
  430.             $criteria->setProperties('limit'$limit);
  431.             
  432.             /* Filtros */
  433.             TTransaction::open('conexao'); 
  434.             
  435.             $whereCampos = new TCriteria;
  436.             $whereCampos->add(new TFilter('filtro','=','S'));
  437.             
  438.             $Repository = new TRepository('Campos');
  439.             $TCampos $Repository->load($whereCampos);       
  440.            
  441.             /* Limpa Valores das Sessões */
  442.             foreach ($TCampos as $TCampo)
  443.             {
  444.                 if (TSession::getValue($TCampo->nome.'_filter'))
  445.                 {
  446.                     $criteria->add(TSession::getValue($TCampo->nome.'_filter'));                
  447.                 }
  448.             }       
  449.                 
  450.             $objects $repository->load($criteriaFALSE);
  451.             
  452.             /* Limpa Grid */
  453.             $this->datagrid->clear();
  454.             
  455.             /* Alimenta Grid */
  456.             if ($objects)
  457.             {
  458.                 foreach ($objects as $object)
  459.                 {
  460.                     $this->datagrid->addItem($object);
  461.                 }   
  462.             }
  463.             
  464.             $criteria->resetProperties();
  465.             $count $repository->count($criteria);
  466.             
  467.             $this->pageNavigation->setCount($count);
  468.             $this->pageNavigation->setProperties($param);
  469.             $this->pageNavigation->setLimit($limit);
  470.             
  471.             TTransaction::close();
  472.             $this->loaded true;
  473.         
  474.         }
  475.         catch (Exception $e)
  476.         {
  477.             new TMessage('error''<b>Error</b> ' $e->getMessage());
  478.             TTransaction::rollback();
  479.         }
  480.     }
  481. }
  482. ?>

?>
JN

Adriano olhando rápido para o código, vc está instanciando a class TQuickForm, e utilizando
  1. <?php
  2. $table1->addRowSet($TCampo->descricao$obj);
  3. ?>


Para TQuickForm, utiliza-se
  1. <?php
  2. $this->form->addQuickField('ID'$id,  100); // automaticamente ele adiciona no setFields.
  3. ?>


Altera a instância da classe para :
  1. <?php
  2. $this->form = new TForm('form_ArquivosDetalhe'); // e faz um teste.
  3. ?>


Usa como exemplo www.adianti.com.br/framework_files/tutor/index.php?class=CompleteFor

PD

Algumas dicas:

* Dê um var_dump() no $array_fields para ver se ele está sendo montado de maneira correta;
* Veja se os campos estão sendo instanciados com o nome correto ($TCampo->nome).

Abs,
Pablo
AT

Obrigado pela dica João Renato, mas se eu substituo pelo o TForm, caio em outros problemas, pois não posso mais utilizar os métodos addQuickAction da classe.
AT

Pablo, verifiquei as duas variáveis e ambas estão corretas tanto $array_fields quanto os nomes dos componentes.

att,
AT

Será um bug... não sei mais onde olhar!
FC

Adriano

Conselho para tudo vá pegar um café e refaça outro form e outra classe (pode ser menor) use classe mãe TForm do 0 e não a TStarnd...

depois poste o resultado....
AT

Alterei para TForm, criei os botões na mão e mesmo assim no getData não trás nada.... GGGHHHHHrrrrrrrrrrrr... =/
FC

Posta o código de como ficou. depois do almoço vou revisar ele.
AT

Achei o meu ERRO Felipe Cortez...

Eu estava fazendo esse tipo de atribuição ao container:

  1. <?php 
  2.         $container->add($table);
  3.         $container->add($this->form);
  4.         $container->add($this->datagrid);
  5.         $container->add($this->pageNavigation);
  6. ?>


No exemplo do tutor somente o form é adicionado, imaginei que dessa forma o getData não encontraria meus campos, então ajustei conforme o tutor, adicionei minha table no form e o form no container ai sim funcionou... =) =) =)