RB
Campos multi values não é adicionado no form
Seguinte, estou tentando utilizar campos (multi values) porem não carregar no formulário.
se alguém puder me ajudar agradeço.
Segue código abaixo
se alguém puder me ajudar agradeço.
Segue código abaixo
- <?php
- class ClienteFisicoBuilder extends TPage
- {
- protected $form;
- protected $table_contato;
- protected $detail_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;';
- $id = new TEntry('id');
- $id->setEditable(false);
- $nome = new TEntry('nome');
- $nome->style='text-align:left;float:left;';
- $nome->addValidation('Data Nascimento', 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
- //$data_nascimento->setDatabaseMask('yyyy-mm-dd');
- $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));
- //$cpf->setDatabaseMask('00000000000');
- $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( [$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');
- //organiza campos para contato
- $this->table_contato = new TTable;
- $this->table_contato->width='100%';
- $this->table_contato->addSection('thead');
- $this->table_contato->addRowSet([$lbl_ddi,$lbl_dd,$lbl_tipo_telefone,$lbl_telefone,$lbl_operadora]);
- $this->form->addContent([$contato] );
- $this->form->addContent([$this->table_contato]);
- $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%');
- $label_nome->setSize('30%');
- $nome->setSize('30%');
- $id->setSize('10%');
- $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('20%');
- $numero->setSize('11.5%');
- $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);
- }
- /**
- * Post data
- */
- 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
- $data = $this->form->getData(); // get the form data into an active record Pessoa
- $pessoa = new Pessoa;
- $pessoa->fromArray((array) $data);
- $this->form->validate();// form validation
- /**
- // Enable Debug logger for SQL operations inside the transaction
- TTransaction::setLogger(new TLoggerSTD); // standard output
- TTransaction::setLogger(new TLoggerTXT('log.txt')); // file
- **/
- $pessoa->nome = $data->nome;
- $pessoa->data_nascimento = TDate::date2us($data->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(".", "", $data->cpf);
- $fisica->rg = str_replace(".", "", $data->rg);
- $fisica->genero_id = $data->genero_id;
- $fisica->civil_id = $data->estado_civil_id;
- $fisica->organizacao_id = $organizacao_id;
- $fisica->etnia_id = $data->etnia_id;
- $fisica->store();
- }
- $pessoa_endereco = new PessoaEndereco;
- }
- $data->id = $pessoa->id;
- $this->form->setData( $this->form->getData() );// set the data back to the form
- TTransaction::close();// close the transaction
- // reload form and session items
- $this->onEdit(array('key'=>$pessoa->id));
- echo '<pre>';
- print_r($data);
- echo '</pre>';
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage());
- $this->form->setData( $this->form->getData() ); // keep form data
- TTransaction::rollback();
- }
- }
- public function addContactRow($item)
- {
- $uniqid = mt_rand(1000000, 9999999);
- $ddi = new TEntry('ddi[]');
- $ddi->{'data-row'} = $this->detail_row;
- $ddi->setId('ddi_'.$uniqid);
- $ddi->setSize('40');
- if (!empty($item->ddi)){
- $ddi->setValue($item->ddi);
- }
- $dd = new TEntry('dd[]');
- $dd->{'data-row'} = $this->detail_row;
- $dd->setId('dd_'.$uniqid);
- $dd->setSize('40');
- if (!empty($item->dd)){
- $dd->setValue($item->dd);
- }
- $tipo_telefone_id = new TDBCombo('tipo_telefone_id[]','sgvo','TipoTelefone','id','descricao');
- $tipo_telefone_id->setDefaultOption(false);
- $tipo_telefone_id->setSize('100');
- $tipo_telefone_id->{'data-row'} = $this->detail_row;
- $tipo_telefone_id->setId('tipo_telefone_id_'.$uniqid);
- $tipo_telefone_id->setSize('100');
- if (!empty($item->tipo_telefone_id)){
- $tipo_telefone_id->setValue($item->tipo_telefone_id);
- }
- $telefone = new TEntry('telefone[]');
- $telefone->setMask('9999-9999');
- $telefone->setSize('100');
- $telefone->{'data-row'} = $this->detail_row;
- $telefone->setId('telefone_'.$uniqid);
- $telefone->setSize('100');
- if (!empty($item->telefone)){
- $telefone->setValue($item->telefone);
- }
- $operadora_id = new TDBCombo('operadora_id[]','sgvo','Operadora','id','nome');
- $operadora_id->setDefaultOption(false);
- $operadora_id ->setSize('100');
- $operadora_id->{'data-row'} = $this->detail_row;
- $operadora_id->setId('operadora_id_'.$uniqid);
- if (!empty($item->operadora_id)){
- $operadora_id->setValue($item->operadora_id);
- }
- // create delete button
- $del = new TImage('fa:trash-o blue');
- $del->onclick = 'ttable_remove_row(this)';
- $row = $this->table_contato->addRowSet( $ddi,$dd,$tipo_telefone_id,$telefone,$operadora_id, $del );
- $row->{'data-row'} = $this->detail_row;
- $this->form->addField($ddi,$dd,$tipo_telefone_id,$telefone,$operadora_id);
- $this->detail_row ++;
- }
- /**
- * method onCep()
- */
- public function onCep($param){
- $retorno = Endereco::BuscaCep($param['cep']);
- if ( $retorno )
- {
- $data = $this->form->getData();
- $data->ibge = strtoupper( $retorno['ibge']);
- $data->gia = strtoupper( $retorno['gia']);
- $data->logradouro = strtoupper( $retorno['logradouro']);
- $data->bairro = strtoupper( $retorno['bairro']);
- $data->cidade = strtoupper( $retorno['localidade']);
- $data->uf = strtoupper( $retorno['uf']);
- $this->form->setData($data);
- }
- else {
- new TMessage("error", "CEP - Em Branco ou Inválido");
- }
- }
- function onEdit($param)
- {
- }
- public function onClear($param){
- $this->form->clear();
- $this->table_contato->addSection('tbody');
- $this->addContactRow( new stdClass );
- // create add button
- $add = new TButton('clone');
- $add->setLabel('Add');
- $add->setImage('fa:plus-circle green');
- $add->addFunction('ttable_clone_previous_row(this)');
- // add buttons in table
- $this->table_contato->addRowSet([$add]);
- }
- }
- ?>
www.adianti.com.br/forum/pt/view_3397?multi-value-nao-e-salvo-os-ite
Então Nataniel,
Em primeiro lugar obrigado pela ajuda.
Fiz conforme indicou acima, porém só esta inserindo uma linha, e não estou identificando onde estou errando.
Segue trecho abaixo :
Aproveitando o gancho ao salvar os dados multvalues não permanecem na tela, e também quando clico em buscar cep os dados são removidos.
Para esse tipo de formulário multivalue você precisa definir a função onSave como static. Mesma coisa para a função onCep.