HB
Erro de Exceção: TCombo could not be converted to string
Olá pessoal.
Estou tentando implementar o código abaixo que verifiquei em um post (https://www.adianti.com.br/forum/pt/view_661?adicionando-validacoes-em-formulari), porém, ao tentar executar a minha classe de cadastro de cliente dá esse erro:
Object of class AdiantiWidgetFormTCombo could not be converted to string
O meu campo é esse: $CLI01Tipo = new TCombo('CLI01Tipo');
e eu preciso que ele seja um combo e na sequência do código fiz assim:
$CLI01Tipo->addItems( [ '1' => 'Física', '2' => 'Jurídica'] );
$CLI01Tipo->setValue('1');
O tipo de dado da minha tabela no banco é varchar e mesmo assim está dando esse erro.
Vejam abaixo o trecho do código que está no fórum que estou tentando implementar (no meu código original troco as minhas variáveis).
Importante:
Nessa parte if($object->tipopessoa_id == 1) eu já testei assim if($object->tipopessoa_id == 1) e também assim if($object->tipopessoa_id == '1') com aspas simples, mais não funciona.
Alguém pode me ajudar a entender e a resolver essa situação de erro envolvendo um combo?
Obrigado,
José Humberto Júnior
Estou tentando implementar o código abaixo que verifiquei em um post (https://www.adianti.com.br/forum/pt/view_661?adicionando-validacoes-em-formulari), porém, ao tentar executar a minha classe de cadastro de cliente dá esse erro:
Object of class AdiantiWidgetFormTCombo could not be converted to string
O meu campo é esse: $CLI01Tipo = new TCombo('CLI01Tipo');
e eu preciso que ele seja um combo e na sequência do código fiz assim:
$CLI01Tipo->addItems( [ '1' => 'Física', '2' => 'Jurídica'] );
$CLI01Tipo->setValue('1');
O tipo de dado da minha tabela no banco é varchar e mesmo assim está dando esse erro.
Vejam abaixo o trecho do código que está no fórum que estou tentando implementar (no meu código original troco as minhas variáveis).
Importante:
Nessa parte if($object->tipopessoa_id == 1) eu já testei assim if($object->tipopessoa_id == 1) e também assim if($object->tipopessoa_id == '1') com aspas simples, mais não funciona.
- <?php
- // Valida o CPF para pessoas físicas
- if($object->tipopessoa_id == 1)
- {
- $validator = new TRequiredValidator;
- $validator->validate('CPF',$object->cpf_cnpj);
- if($object->cpf_cnpj != '000.000.000-00')
- {
- $validator = new TCPFValidator;
- $validator->validate('CPF',$object->cpf_cnpj);
- $id = $this->form->getField('id');
- $validator = new TUniqueValidator;
- $validator->validate('CPF',$object->cpf_cnpj,array('class'=>'Cliente','field'=>'cpf_cnpj','pk'=>$id));
- }
- }
- // Valida o CNPJ para pessoas jurídicas
- if($object->tipopessoa_id == 2)
- {
- $validator = new TRequiredValidator;
- $validator->validate('CNPJ',$object->cpf_cnpj);
- if($object->cpf_cnpj != '00.000.000/0000-00')
- {
- $validator = new TCNPJValidator;
- $validator->validate('CNPJ',$object->cpf_cnpj);
- $id = $this->form->getField('id');
- $validator = new TUniqueValidator;
- $validator->validate('CNPJ',$object->cpf_cnpj,array('class'=>'Cliente','field'=>'cpf_cnpj','pk'=>$id));
- }
- }
- ?>
Alguém pode me ajudar a entender e a resolver essa situação de erro envolvendo um combo?
Obrigado,
José Humberto Júnior
Na mensagem de erro deve estar aparecendo em qual linha é o problema. Poste o conteúdo dessa linha.
Boa tarde.
essa é a linha do erro: File: app control Sistema clienteForm.class.php : 112
abaixo o código completo da classe:
acho que o correto seria
Olá Willian,
Fazendo desta forma que você me indicou, da um erro de propriedade indefinida justamente na linha 112 e 125, respectivamente
Notice: Undefined property: AdiantiWidgetWrapperTQuickForm::$CLI01Tipo in C:xampphtdocsSistemaappcontrolSistemaclienteForm.class.php on line 112
Notice: Undefined property: AdiantiWidgetWrapperTQuickForm::$CLI01Tipo in C:xampphtdocsSistemaappcontrolSistemaclienteForm.class.php on line 125
O trecho do código modificado ficou assim:
vamos por parte (eu não tinha lido todo seu codigo)
1- vejamos esta parte primeiro
2- lembre que você esta fazendo uso do __construct (aqui ainda não tem acesso ao valores imputados no formulario) creio que esta na área errado seu código, deveria estar no onSave
se colocar no onsave deve ficar algo como
logo faça as correçoes pertinentes, não fiz todas as alterações
Willian, incluí a validação no onSave e deu certinho.
Mais uma vez muito obrigado.