RB
Campos labels é adicionado mais de uma vez - Multivalues
Olá,
Estou criando um form multivalues, porém esta gerando os labels duas vezes e também só esta salvado o ultimo campo, aguém pode me ajudar a identificar onde esta os erros.
segue código abaixo
Estou criando um form multivalues, porém esta gerando os labels duas vezes e também só esta salvado o ultimo campo, aguém pode me ajudar a identificar onde esta os erros.
segue código abaixo
- <?php
- class ClienteFisicoBuilder extends TPage
- {
- protected $form;
- protected $table_contato;
- protected $frame_contato;
- protected $deta_row;
- public function __construct($param)
- {
- parent::__construct($param);
- $this->form = new BootstrapFormBuilder('frm_cliente_fisico');
- $this->form->setFormTitle('Cliente');
- $this->form->style='font-family:Arial Narrow;width:100%;';
- $dados_cliente = new TLabel('Dados Pessoais', '#1F4E78', 12, 'b');
- $dados_cliente->style='text-align:left;border-bottom:1px solid #c0c0c0;width:100%;float:left;margin-top:-20px;font-family:Arial Narrow;';
- $this->form->addContent( [$dados_cliente] );
- $lbl_id = new TLabel('ID','#1F4E78');
- $label_nome = new TLabel('Nome','#1F4E78');
- $label_nome->style='text-align:left;float:left;font-family:Arial Narrow;';
- $lbl_data_nascto = new TLabel('Data Nascimento','#1F4E78');
- $lbl_data_nascto->style='text-align:left;float:left;font-family:Arial Narrow;';
- $lbl_estado_civil = new TLabel('Estado Cívil','#1F4E78');
- $lbl_estado_civil->style='text-align:left;float:left;font-family:Arial Narrow;';
- $cliente_id = new TEntry('cliente_id');
- $cliente_id->setEditable(false);
- $nome = new TEntry('nome');
- $nome->style='text-align:left;float:left;';
- $nome->addValidation('Nome', new TRequiredValidator);
- $data_nascimento = new TDate('data_nascimento');
- $data_nascimento->addValidation('Data Nascimento', new TRequiredValidator);
- $data_nascimento->style='text-align:left;float:left;';
- $data_nascimento->setMask('dd/mm/yyyy'); // define date mask
- $estado_civil = new TDBCombo('estado_civil_id','sgvo', 'Civil', 'id', 'descricao');
- $estado_civil->setDefaultOption(false);
- $lbl_genero = new TLabel('Genero','#1F4E78');
- $lbl_genero->style ='text-align:left;float:left;width:100%;font-family:Arial Narrow;';
- $genero_id = new TCombo('genero_id');
- $genero_id->addItems( ['1' => 'Masculino', '2' => 'Feminino'] );
- $genero_id->setDefaultOption(false);
- $lbl_cpf = new TLabel('CPF','#1F4E78');
- $cpf = new TEntry('cpf');
- $cpf->setMask('000.000.000.00');
- $cpf->addValidation('CPF', new TCPFValidator, new TMaxValueValidator,array(14));
- $lbl_cpf->style='text-align:left;float:left;font-family:Arial Narrow;';
- $lbl_rg = new TLabel('RG','#1F4E78');
- $rg = new TEntry('rg');
- $rg->setMask('00.000.000.00');
- $rg->setMaxLength(12);
- $lbl_rg->style='text-align:left;float:left;font-family:Arial Narrow;';
- /*
- $lbl_cnh = new TLabel('CNH','#1F4E78');
- $cnh = new TEntry('cnh');
- $cnh->setMask('00.000.000.00');
- $cnh->setMaxLength(12);
- $lbl_cnh->style='text-align:left;float:left;';
- */
- $lbl_etnia = new TLabel('Etnia','#1F4E78');
- $etnia_id = new TDBCombo('etnia_id','sgvo','Etnia','id','descricao');
- $etnia_id->setDefaultOption(false);
- // $this->form->addFields( [$label_id,$id] );
- $this->form->addFields( [$lbl_id,$label_nome,$lbl_data_nascto,$lbl_estado_civil] );
- $this->form->addFields( [$cliente_id,$nome,$data_nascimento,$estado_civil] );
- $this->form->addFields( [$lbl_genero,$lbl_etnia,$lbl_cpf,$lbl_rg] );
- $this->form->addFields( [$genero_id,$etnia_id,$cpf,$rg] );
- //dados de contato
- $contato = new TLabel('Contato', '#1F4E78', 12, 'b');
- $contato->style='text-align:left;border-bottom:1px solid #c0c0c0;width:100%;font-family:Arial Narrow;';
- $lbl_ddi = new TLabel('DDI','#1F4E78');
- $lbl_ddi->style='text-align:left;font-family:Arial Narrow;';
- $lbl_dd = new TLabel('DDD','#1F4E78');
- $lbl_dd->style='text-align:left;font-family:Arial Narrow;';
- $lbl_tipo_telefone = new TLabel('Tipo Telefone','#1F4E78');
- $lbl_tipo_telefone->style='text-align:left;font-family:Arial Narrow;';
- $lbl_telefone = new TLabel('Telefone','#1F4E78');
- $lbl_telefone->style='text-align:left;font-family:Arial Narrow;';
- $lbl_operadora = new TLabel('Operadora','#1F4E78');
- $lbl_operadora->style='text-align:left;font-family:Arial Narrow;';
- $lbl_email = new TLabel('Email','#1F4E78');
- $lbl_email->style='text-align:left;;font-family:Arial Narrow;';
- $email = new TEntry('email');
- //$email->addValidation('email', new TEmailValidator); // email field
- $lbl_site = new TLabel('Site','#1F4E78');
- $lbl_site->style='text-align:left;font-family:Arial Narrow;';
- $site = new TEntry('site');
- //Cria tabela contato adiciona campos
- $this->table_contato = new TTable;
- $this->table_contato->style='font-family:Arial Narrow;';
- $this->table_contato->width='100%';
- $this->table_contato->addSection('thead');
- //$row = $this->table_contato->addRow();
- $this->frame_contato = new TFrame;
- $this->frame_contato->style='border:none;float:lef; margin-left:-15px;';
- //$frame_contato->setLegend('Contato');
- $this->frame_contato->add($contato);
- $row = $this->table_contato->addRowSet($lbl_ddi,$lbl_dd,$lbl_tipo_telefone,$lbl_telefone,$lbl_operadora);
- $this->frame_contato->add($row);
- $this->form->addContent([$this->frame_contato]);
- //adiciona contato web
- $this->form->addFields( [$lbl_email,$lbl_site] );
- $this->form->addFields( [$email,$site] );
- //dados de correspondência
- $lbl_endereco = new TLabel('Endereco', '#1F4E78', 12, 'b');
- $lbl_endereco->style='text-align:left;border-bottom:1px solid #c0c0c0;width:100%;font-family:Arial Narrow;';
- $lbl_cep = new TLabel('Cep', '#1F4E78');
- $lbl_cep->style='text-align:left;border-bottom:1px solid #c0c0c0;font-family:Arial Narrow;';
- $cep = new TEntry('cep');
- $cep->addValidation('CEP', new TRequiredValidator, new TMaxValueValidator,array(8));
- $lbl_logradouro = new TLabel('Logradouro', '#1F4E78');
- $lbl_logradouro->style='text-align:left;border-bottom:1px solid #c0c0c0;font-family:Arial Narrow;';
- $logradouro = new TEntry('logradouro');
- $logradouro->style='float:left;';
- $logradouro->addValidation('Logradouro', new TRequiredValidator);
- $lbl_numero = new TLabel('Número', '#1F4E78');
- $lbl_numero->style='text-align:left;border-bottom:1px solid #c0c0c0;font-family:Arial Narrow;';
- $numero = new TEntry('numero');
- $numero->addValidation('Número', new TRequiredValidator);
- $lbl_bairro = new TLabel('Bairro', '#1F4E78');
- $lbl_bairro->style='text-align:left;border-bottom:1px solid #c0c0c0;font-family:Arial Narrow;';
- $bairro = new TEntry('bairro');
- $bairro->addValidation('Bairro', new TRequiredValidator);
- $lbl_cidade = new TLabel('Cidade', '#1F4E78');
- $lbl_cidade->style='text-align:left;border-bottom:1px solid #c0c0c0;width:100%;font-family:Arial Narrow;';
- $cidade = new TEntry('cidade');
- $cidade->addValidation('Cidade', new TRequiredValidator);
- $lbl_uf = new TLabel('Estado', '#1F4E78');
- $lbl_uf->style='text-align:left;border-bottom:1px solid #c0c0c0;font-family:Arial Narrow;';
- $uf = new TEntry('uf');
- $uf->addValidation('Estado', new TRequiredValidator);
- $lbl_complemento = new TLabel('Complemento', '#1F4E78');
- $lbl_complemento->style='text-align:left;border-bottom:1px solid #c0c0c0;font-family:Arial Narrow;';
- $complemento = new TEntry('complemento');
- $lbl_id->setSize('10%');
- $cliente_id->setSize('10%');
- $label_nome->setSize('30%');
- $nome->setSize('30%');
- $lbl_data_nascto->setSize('20%');
- $data_nascimento->setSize('20%');
- $lbl_estado_civil->setSize('20%');
- $estado_civil->setSize('20%');
- $lbl_genero->setSize('20%');
- $genero_id->setSize('20%');
- $lbl_cpf->setSize('20%');
- $cpf->setSize('20%');
- $lbl_rg->setSize('20%');
- $rg->setSize('20%');
- //$lbl_cnh->setSize('19%');
- //$cnh->setSize('19%');
- $lbl_etnia->setSize('20%');
- $etnia_id->setSize('20%');
- $lbl_ddi->setSize('40');
- $lbl_dd->setSize('40');
- $lbl_tipo_telefone->setSize('100');
- $lbl_telefone->setSize('100');
- $lbl_email->setSize('40%');
- $lbl_site->setSize('40%');
- $email->setSize('40%');
- $site->setSize('40%');
- $lbl_cep->setSize('28.5%');
- $cep->setSize('20%');
- $lbl_logradouro->setSize('40%');
- $logradouro->setSize('40%');
- $lbl_numero->setSize('11.88%');
- $numero->setSize('11.88%');
- $lbl_bairro->setSize('20%');
- $lbl_cidade->setSize('32%');
- $lbl_uf->setSize('8%');
- $bairro->setSize('20%');
- $cidade->setSize('32%');
- $uf->setSize('8%');
- $lbl_complemento->setSize('20%');
- $complemento->setSize('20%');
- $btn_cep = new TButton('btn_cep');
- $btn_cep->setSize(100);
- $btn_cep->style='float:left;padding-rigth:10px;color:#1F4E78';
- $btn_cep->setAction(new TAction(array($this,'onCep')),'Busca Cep');
- $btn_cep->setImage('fa:search blue');
- $this->form->addFields( [$lbl_endereco] );
- $this->form->addFields( [$lbl_cep,$lbl_logradouro,$lbl_numero] );
- $this->form->addFields( [$cep,$btn_cep,$logradouro,$numero] );
- $this->form->addFields( [$lbl_bairro,$lbl_cidade,$lbl_uf,$lbl_complemento] );
- $this->form->addFields( [$bairro,$cidade,$uf,$complemento] );
- $this->form->addAction('Salvar', new TAction(array($this, 'onSave')), 'ico_save.png');
- //wrap the page content using vertical box
- $vbox = new TVBox;
- $vbox->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
- $vbox->add($this->form);
- parent::add($this->form);
- }
- public static function onSave($param){
- $organizacao_id = TSession::getValue('organizacion_id'); // pega id da empresa
- $atualizacao = date('Y-m-d H:m:s');
- try
- {
- TTransaction::open('centinel'); // open a transaction
- $pessoa = new Pessoa;
- /*
- // Enable Debug logger for SQL operations inside the transaction
- TTransaction::setLogger(new TLoggerSTD); // standard output
- TTransaction::setLogger(new TLoggerTXT('log.txt')); // file
- */
- $pessoa->nome = $param['nome'];
- $pessoa->data_nascimento = TDate::date2us($param['data_nascimento']);
- $pessoa->organizacao_id = $organizacao_id;
- $pessoa->tipo_pessoa_id = 1;
- $pessoa->store(); // save the object
- $pessoa_id = $pessoa->id;
- if($pessoa_id)
- {
- $cliente = new Cliente;
- $cliente->pessoa_id = $pessoa_id;
- $cliente->organizacao_id = $organizacao_id;
- $cliente->store();
- $cliente_id = $cliente->id;
- if($cliente_id)
- {
- $fisica = new Fisica;
- $fisica->pessoa_id = $pessoa_id;
- $fisica->cpf = str_replace(".", "", $param['cpf']);
- $fisica->rg = str_replace(".", "", $param['rg']);
- $fisica->genero_id = $param['genero_id'];
- $fisica->civil_id = $param['estado_civil_id'];
- $fisica->organizacao_id = $organizacao_id;
- $fisica->etnia_id = $param['etnia_id'];
- $fisica->store();
- }
- if(!empty($param['telefone']) And is_array($param['telefone']))
- {
- foreach($param['telefone'] as $row =>$contatos)
- {
- if($contatos)
- {
- //Adiciona contato
- $contato = new Contato;
- $contato->pessoa_id = $pessoa_id;
- $contato->ddi = $param['ddi'][$row];
- $contato->ddd = $param['dd'][$row];
- $contato->telefone = $param['telefone'][$row];
- $contato->tipo_telefone_id = $param['tipo_telefone_id'][$row];
- $contato->operadora_id = $param['operadora_id'][$row];
- $contato->store();
- }
- }
- }
- //adiciona contato web
- if(!empty($param['email']) or $param['site'])
- {
- $contato_web = new Contatoweb;
- $contato_web->pessoa_id = $pessoa_id;
- $contato_web->email = $param['email'];
- $contato_web->site = $param['site'];
- $contato_web->store();
- }
- }
- $data = new stdClass;
- $data->cliente_id = $pessoa->id;
- TForm::sendData('frm_cliente_fisico', $data);
- TTransaction::close();// close the transaction
- // reload form and session items
- // $this->onEdit(array('key'=>$pessoa->id));
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage());
- TForm::sendData('frm_cliente_fisico', $data);// keep form data
- TTransaction::rollback();
- }
- }
- //method onCep()
- public static function onCep($param){
- $retorno = Endereco::BuscaCep($param['cep']);
- if ( $retorno )
- {
- $obj = new StdClass;
- $obj->ibge = strtoupper( $retorno['ibge']);
- $obj->gia = strtoupper( $retorno['gia']);
- $obj->logradouro = strtoupper( $retorno['logradouro']);
- $obj->bairro = strtoupper( $retorno['bairro']);
- $obj->cidade = strtoupper( $retorno['localidade']);
- $obj->uf = strtoupper( $retorno['uf']);
- TForm::sendData('frm_cliente_fisico', $obj);
- TScript::create('$("input[name=numero]").focus();');
- }
- else {
- new TMessage("error", "CEP - Em Branco ou Inválido");
- }
- }
- public function onEdit($param)
- {
- }
- public function addDetailRow($param)
- {
- $uniqid = mt_rand(1000000, 9999999);
- $ddi = new TEntry('ddi[]');
- $ddi->setValue('55');
- $ddi->addValidation('DDI', new TMaxValueValidator,array(2));
- $ddi->setId('ddi_'.$uniqid);
- $dd = new TEntry('dd[]');
- $dd->setValue('011');
- $dd->addValidation('DDD', new TMaxValueValidator,array(2));
- $dd->setId('dd_'.$uniqid);
- $tipo_telefone_id = new TDBCombo('tipo_telefone_id[]','centinel','TipoTelefone','id','descricao');
- $tipo_telefone_id->setDefaultOption(false);
- $tipo_telefone_id->setId('tipo_telefone_id_'.$uniqid);
- $telefone = new TEntry('telefone[]');
- $telefone->setMask('9999-9999');
- $telefone->setId('telefone_'.$uniqid);
- $operadora_id = new TDBCombo('operadora_id[]','centinel','Operadora','id','nome');
- $operadora_id->setDefaultOption(false);
- $operadora_id->setId('operadora_id_'.$uniqid);
- // create delete button
- $del = new TImage('fa:trash-o red');
- $del->onclick = 'ttable_remove_row(this)';
- $frame = $this->frame_contato;
- $row = $this->table_contato;
- $row->addRowSet($ddi,$dd,$tipo_telefone_id,$telefone,$operadora_id,$del);
- $frame->add($row);
- $this->detail_row ++;
- $ddi->setSize('40');
- $dd->setSize('40');
- $tipo_telefone_id->setSize('100');
- $telefone->setSize('100');
- $operadora_id ->setSize('100');
- }
- public function onClear($param)
- {
- $this->table_contato->addSection('tbody');
- $this->addDetailRow(new stdClass);
- //criar e adicionar botão
- $add = new TButton('clone');
- $add->setLabel('Add');
- $add->setImage('fa:plus-circle green');
- $add->addFunction('ttable_clone_previous_row(this)');
- //adiciona botão a tabela
- $this->table_contato->addRowSet($add);
- //$this->frame_contato->add($add_contato);
- }
- }
- ?>
Precisando também de ajuda com esse componente, sendo que meu problema é que quando recebo o array, os valores vem separados por :(Dois pontos).
Está duplicando os labels pela forma como a tabela está sendo adicionada. No construtor você adiciona uma linha no frame, e depois na função addDetailRow você adiciona a tabela para cada registro. Adicione a tabela ao frame somente uma vez, no construtor, e depois adicione as linhas à tabela: