RB
Multi value não é salvo os itens do combo
Ola, Pessoal,
Estou com o seguinte problema, ao clicar em salvar os valores (id 's ) não são salvos, alguém pode me ajudar a identificar resolver o problema ?
Segue código abaixo
Estou com o seguinte problema, ao clicar em salvar os valores (id 's ) não são salvos, alguém pode me ajudar a identificar resolver o problema ?
Segue código abaixo
- <?php
- class ClienteFisicoBuilder extends TPage
- {
- private $form;
- public function __construct()
- {
- parent::__construct();
- $this->form = new BootstrapFormBuilder('frm_cliente_fisico');
- $this->form->setFormTitle('Cliente');
- $this->form->style='font-family:Arial Narrow;';
- // define the CSS class
- //$this->form->class='tdatagrid_table customized-table';
- // import the CSS file
- // parent::include_css('app/resources/custom-table.css');
- $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] );
- // add a row with 2 slots
- //$label_id = new TLabel('Id','#1F4E78');
- // $label_id->style='text-align:left;float:left;';
- //div container para ajustar os label e campos
- $div_nome = new TElement("span");
- $div_nome->style="background-color=red;width:240px;";
- $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->style='text-align:left;float:left;';
- $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( [$label_nome,$lbl_data_nascto,$lbl_estado_civil] );
- $this->form->addFields( [$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;';
- $ddi = new TEntry('ddi[]');
- $lbl_dd = new TLabel('DDD','#1F4E78');
- $lbl_dd->style='text-align:left;font-family:Arial Narrow;';
- $dd = new TEntry('dd[]');
- $lbl_tipo_telefone = new TLabel('Tipo Telefone','#1F4E78');
- $lbl_tipo_telefone->style='text-align:left;font-family:Arial Narrow;';
- $tipo_telefone_id = new TDBCombo('TipoTelefone','sgvo','TipoTelefone','id','descricao');
- $tipo_telefone_id->setDefaultOption(false);
- $lbl_telefone = new TLabel('Telefone','#1F4E78');
- $lbl_telefone->style='text-align:left;font-family:Arial Narrow;';
- $telefone = new TEntry('telefone[]');
- $telefone->setMask('9999-9999');
- $lbl_operadora = new TLabel('Operadora','#1F4E78');
- $lbl_operadora->style='text-align:left;font-family:Arial Narrow;';
- $operadora_id = new TDBCombo('Operadora','sgvo','Operadora','id','nome');
- $operadora_id->setDefaultOption(false);
- $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');
- $this->form->addContent( [$contato] );
- //adiciona campos para contato / telefone
- $table = new TTable;
- $table->style='border 1px solid #333;font-family:Arial Narrow;';
- $table->width='100%';
- $table->addSection('thead');
- $table->addRowSet([$lbl_ddi,$lbl_dd,$lbl_tipo_telefone,$lbl_telefone,$lbl_operadora]);
- $table->addSection('tbody');
- for ($n=0; $n<=0; $n++)
- {
- // create delete button
- $del = new TImage('fa:trash-o blue');
- $del->onclick = 'ttable_remove_row(this)';
- // create add button
- $add = new TButton('clone');
- $add->setLabel('Adicionar');
- $add->setImage('fa:plus-circle green');
- $table->addRowSet( [$ddi,$dd,$tipo_telefone_id,$telefone,$operadora_id, $del]);
- }
- $add->addFunction('ttable_clone_previous_row(this)');
- $table->addRowSet($add);
- $this->form->addFields( [$table]);
- $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');
- $label_nome->setSize('40%');
- $nome->setSize('40%');
- $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');
- $ddi->setSize('40');
- $lbl_dd->setSize('40');
- $dd->setSize('40');
- $lbl_tipo_telefone->setSize('100');
- $tipo_telefone_id->setSize('100');
- $lbl_telefone->setSize('100');
- $telefone->setSize('100');
- $operadora_id ->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('20%');
- $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 = $data->cpf;
- $fisica->cpf = str_replace(".", "", $data->cpf);
- //$fisica->rg = $data->rg;
- $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;
- /*
- if(!empty($data->telefone))
- {
- foreach($data['telefone'] as $row =>$contatos)
- {
- */
- //Adiciona contato
- $contato = new Contato;
- $contato->pessoa_id = $pessoa_id;
- $contato->tipo_telefone_id = $data->tipo_telefone_id;
- $contato->telefone = $data->telefone;
- $contato->operadora_id = $data->operadora_id;
- $contato->email = $data->email;
- $contato->site = $data->site;
- //$pessoa->addContato($contato);
- $contato->store();
- /*
- }
- }
- */
- }
- $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();
- }
- }
- /**
- * method onCep()
- * Executed whenever the user clicks at the edit button da datagrid
- */
- 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)
- {
- }
- }
- ?>
Primeiro confira o nome dos campos. Você criou o campo com o nome TipoTelefone e na hora de salvar está buscando o atributo tipo_telefone_id.
E veja o link abaixo, a maneira de tratar as informações de formulários multivalues é um pouco diferente:
adianti.com.br/framework_files/tutor/index.php?class=SaleMultiValueF
Então,
Tentei seguir o exemplo da video aula e também do link que passou, mas não consegui,
Pode me ajudar a corrigir ?
Como esses campos são arrays, você precisa informar qual o índice($row) na hora de atribuí-los ao objeto $contato: