RC
Trabalhando com TRadioGroup
Bom dia pessoal. Estou tendo um problema com um formulário em que tenho um campo TRadioGroup.
Quando eu clico no botão novo para cadastrar um novo fornecedor o TRadioGroup não vem marcado como segue em anexo.
E um outro porém é quando cadastro um fornecedor do tipo pessoa jurídica e depois vou editar alterando pra pessoa física, o mesmo não apaga o campo pessoa jurídica. O mesmo fica não editável, mas não limpa o campo!
Podem me dar um help quanto a esses dois problemas?
Código da classe control FornecedorFormView:
Quando eu clico no botão novo para cadastrar um novo fornecedor o TRadioGroup não vem marcado como segue em anexo.
E um outro porém é quando cadastro um fornecedor do tipo pessoa jurídica e depois vou editar alterando pra pessoa física, o mesmo não apaga o campo pessoa jurídica. O mesmo fica não editável, mas não limpa o campo!
Podem me dar um help quanto a esses dois problemas?
Código da classe control FornecedorFormView:
- <?php
- /**
- * FornecedorFormView Control
- * @author <Ricelli Carvalho>
- */
- class FornecedorFormView extends TStandardForm {
- protected $form;
- function __construct() {
- parent::__construct();
- $this->form = new TQuickForm('form_Fornecedor');
- $this->form->setFormTitle('Fornecedores');
- $this->form->class = 'tform';
- parent::setDatabase('permission');
- parent::setActiveRecord('Fornecedor');
- $id = new TEntry('id');
- $id->setEditable(false);
- $tipopessoa = new Adianti\\Widget\\Form\\TRadioGroup('tipo');
- $tipopessoa->addItems(array('1'=>'Pessoa fisíca', '2'=>'Pessoa jurídica'));
- $tipopessoa->setLayout('horizontal');
- $tipopessoa->setValue(2);
- $nomerazaosocial = new Adianti\\Widget\\Form\\TEntry('nomerazaosocial');
- $cnpj = new Adianti\\Widget\\Form\\TEntry('cnpj');
- $cnpj->setMask('99.999.999/9999-99');
- $cpf = new Adianti\\Widget\\Form\\TEntry('cpf');
- $cpf->setMask('999.999.999-99');
- $inscricaoestadual = new Adianti\\Widget\\Form\\TEntry('inscricaoestadual');
- $endereco = new Adianti\\Widget\\Form\\TEntry('endereco');
- $cidade = new Adianti\\Widget\\Form\\TEntry('cidade');
- $bairro = new Adianti\\Widget\\Form\\TEntry('bairro');
- $uf = new TCombo('uf');
- $uf->addItems( array("AC"=>"AC - Acre", "AL"=>"AL - Alagoas", "AM"=>"AM - Amazonas", "AP"=>"AP - Amapá","BA"=>"BA - Bahia","CE"=>"CE - Ceará","DF"=>"DF - Distrito Federal","ES"=>"ES - Espírito Santo","GO"=>"GO - Goiás","MA"=>"MA - Maranhão","MT"=>"MT - Mato Grosso","MS"=>"MS - Mato Grosso do Sul","MG"=>"MG - Minas Gerais","PA"=>"PA - Pará","PB"=>"PB - Paraíba","PR"=>"PR - Paraná","PE"=>"PE - Pernambuco","PI"=>"PI - Piauí","RJ"=>"RJ - Rio de Janeiro","RN"=>"RN - Rio Grande do Norte","RO"=>"RO - Rondônia","RS"=>"RS - Rio Grande do Sul","RR"=>"RR - Roraima","SC"=>"SC - Santa Catarina","SE"=>"SE - Sergipe","SP"=>"SP - São Paulo","TO"=>"TO - Tocantins"));
- $cep = new Adianti\\Widget\\Form\\TEntry('cep');
- $cep->setMask('99999-999');
- $telefone = new Adianti\\Widget\\Form\\TEntry('telefone');
- $observacoes= new Adianti\\Widget\\Form\\TText('observacoes');
- // add the fields
- $this->form->addQuickField('ID', $id, 50);
- $this->form->addQuickField('Tipo de pessoa' . ': ', $tipopessoa, 200);
- $this->form->addQuickField('Nome/Razão social' . ': ', $nomerazaosocial, 400);
- $this->form->addQuickField('CNPJ' . ': ', $cnpj, 200);
- $this->form->addQuickField('CPF' . ': ', $cpf, 200);
- $this->form->addQuickField('Inscrição estadual' . ': ', $inscricaoestadual, 200);
- $this->form->addQuickField('Endereço' . ': ', $endereco, 200);
- $this->form->addQuickField('Cidade' . ': ', $cidade, 200);
- $this->form->addQuickField('Bairro' . ': ', $bairro, 200);
- $this->form->addQuickField('UF' . ': ', $uf, 200);
- $this->form->addQuickField('CEP' . ': ', $cep, 200);
- $this->form->addQuickField('Telefone' . ': ', $telefone, 200);
- $this->form->addQuickField('Observações' . ': ', $observacoes,200);
- $observacoes->setSize(400, 90);
- $tipopessoa->setChangeAction( new TAction( array($this, 'onChangeRadio')) );
- self::onChangeRadio( array('enable'=>2) );
- // validations
- // add form actions
- $this->form->addQuickAction(_t('Save'), new TAction(array($this, 'onSave')), 'ico_save.png');
- $this->form->addQuickAction(_t('New'), new TAction(array($this, 'onEdit')), 'ico_new.png');
- $this->form->addQuickAction(_t('Back to the listing'), new TAction(array('CategoriaDataGrid', 'onReload')), 'ico_datagrid.png');
- $container = new TTable;
- $container->style = 'width: 80%';
- $container->addRow()->addCell(new TXMLBreadCrumb('menu.xml', 'FornecedorFormView'));
- $container->addRow()->addCell($this->form);
- // add the form to the page
- parent::add($container);
- }
- /**
- * on ChangeRadio change
- * @param $param Action parameters
- */
- public static function onChangeRadio($param)
- {
- if ($param['tipo'] == 1)
- {
- TEntry::enableField('form_Fornecedor', 'cpf');
- TEntry::disableField('form_Fornecedor', 'cnpj');
- TEntry::disableField('form_Fornecedor', 'inscricaoestadual');
- }
- else
- {
- TEntry::disableField('form_Fornecedor', 'cpf');
- TEntry::enableField('form_Fornecedor', 'cnpj');
- TEntry::enableField('form_Fornecedor', 'inscricaoestadual');
- }
- }
- }
- ?>
É preciso fazer essas alterações no onEdit no seu caso é preciso criar o onEdit dentro dessa classe pois ela está pegando o onEdit da classe TStandardForm.
Ok. E como se faz para limpar somente um determinado campo input do formulário?
Tem o comando $this->form->clear(); mas o mesmo limpar todo o formulário! Preciso limpar só determinado campo.
Ok Felipe, fiz dessa forma ai e deu certo limpar os campos. Só não consegui colocar pra funcionar no método onEdit como vc sugeriu que eu fizesse. Quando clico pra editar um registro do tipo 2 (pessoa jurídica) funciona normalmente, mas quando é do tipo 1 (pessoa física) não traz o CPF!
Fiz assim no onEdit:
E o método onChangeRadio ficou assim:
Alguma sugestão pessoal?
O erro com certeza é na passagem do parâmetro nessa linha:
self::onChangeRadio( array('tipo'=>$object->tipo) );
Pode testa como está chegando o $param['tipo'] dentro da função onChangeRadio ou pode simplesmente fazer essa checagem dentro do próprio onEdit
Tenta descobrir o erro na passagem, mas se ficar muito apertado é só um if a mais... não vai influenciar :)