Lançado Adianti Framework 7.6!
Clique aqui para saber mais
MAscara de CEP Galera boa tarde! Estou formando a mascara para o meu campo de CEP em modo de edição conseguir colocar a máscara através do comando abaixo no método construtor. Porém ao navegar entre os registros, e nas exibições do campo a máscara não está funcionando, apenas nos inputs quando estou criando ou editando um registro a máscara funciona depo...
LB
MAscara de CEP  
Fechado
Galera boa tarde!
Estou formando a mascara para o meu campo de CEP em modo de edição conseguir colocar a máscara através do comando abaixo no método construtor.
<?PHP e
$cep->setMask('99.999-999')
?>
Porém ao navegar entre os registros, e nas exibições do campo a máscara não está funcionando, apenas nos inputs quando estou criando ou editando um registro a máscara funciona depois que salvo o campo fica sem mascara.

Alguém pode me dar uma ajuda?

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (9)


FV

Olá Leandro, infelizmente não consigo identificar, então poderia postar seu código ou enviar por e-mail?
Email: phelipx3@gmail.com
LB

Felipe enviei no seu e-mail, mas vou postar o código aqui caso mais alguém tenha interesse no assunto.
  1. <?php e
  2. /**
  3.  * PacienteFormList Registration
  4.  * @author  <Leandro J. N. Barbosa>
  5.  */
  6. class PacienteFormList extends TPage
  7. {
  8.     protected $form// form
  9.     protected $datagrid// datagrid
  10.     protected $pageNavigation;
  11.     protected $loaded;
  12.       
  13.     /**
  14.      * Class constructor
  15.      * Creates the page and the registration form
  16.      */
  17.     function __construct()
  18.     {
  19.         parent::__construct();
  20.         
  21.         // creates the form
  22.         $this->form = new TQuickForm('form_Paciente');
  23.         $this->form->class 'tform'// CSS class
  24.         $this->form->setFormTitle('Paciente'); // define the form title
  25.         
  26.         // create the form fields
  27.         $cod_pac                        = new TEntry('cod_pac');
  28.         $nome                           = new TEntry('nome');
  29.         $cod_conv                       = new  ">TDBSeekButton('cod_conv','info_clin','form_Paciente','convenio','nome','cod_conv','convenio_nome');
  30.         $convenio_nome                  = new TEntry('convenio_nome');   
  31.         $cpf                            = new TEntry('cpf');
  32.         $cep                            = new TEntry('cep');
  33.         $logradouro                     = new TEntry('logradouro');
  34.         $numero                         = new TEntry('numero');
  35.         $bairro                         = new TEntry('bairro');
  36.         $cidade                         = new TEntry('cidade');
  37.         $estado                         = new TCombo('estado');
  38.         $pais                           = new TEntry('pais');
  39.         $data_nasc                      = new TDate('data_nasc');
  40.         $e_mail                         = new TEntry('e_mail');
  41.         $tel_fixo                       = new TEntry('tel_fixo');
  42.         $celular                        = new TEntry('celular');
  43.         $tel_contato                    = new TEntry('tel_contato');
  44.         $data_inclusao                  = new TDate('data_inclusao');
  45.         
  46.         // add the fields
  47.         $this->form->addQuickField('Cód. Paciente'$cod_pac,  150);
  48.         $this->form->addQuickField('Nome'$nome,  600, new TRequiredValidator );
  49.         $this->form->addQuickField('Convênio'$cod_conv,  100, new TRequiredValidator );
  50.         $this->form->addQuickField('Nome Convênio'$convenio_nome,  600);
  51.         $this->form->addQuickField('CPF'$cpf,  200, new TCPFValidator );
  52.         $this->form->addQuickField('CEP'$cep,  200);
  53.         $this->form->addQuickField('Logradouro'$logradouro,  800, new TRequiredValidator );
  54.         $this->form->addQuickField('Número'$numero,  150, new TRequiredValidator );
  55.         $this->form->addQuickField('Bairro'$bairro,  600);
  56.         $this->form->addQuickField('Cidade'$cidade,  600, new TRequiredValidator );
  57.         $this->form->addQuickField('Estado'$estado,  150, new TRequiredValidator );
  58.         $this->form->addQuickField('Pais'$pais,  200, new TRequiredValidator );
  59.         $this->form->addQuickField('Data de Nascimento'$data_nasc,  150, new TRequiredValidator );
  60.         $this->form->addQuickField('E-Mail'$e_mail,  800, new TEmailValidator);
  61.         $this->form->addQuickField('Tel. Fixo'$tel_fixo,  250);
  62.         $this->form->addQuickField('Celular'$celular,  250);
  63.         $this->form->addQuickField('Tel. Contato'$tel_contato,  250);
  64.         $this->form->addQuickField('Data de Inclusão'$data_inclusao,  150);
  65.         
  66.         //carregando os estados para o combo de estado
  67.         $itens_uf = array(); 
  68.         $itens_uf['AC'] = 'Acre'
  69.         $itens_uf['AL'] = 'Alagoas'
  70.         $itens_uf['AP'] = 'Amapá'
  71.         $itens_uf['AM'] = 'Amazonas'
  72.         $itens_uf['BA'] = 'Bahia'
  73.         $itens_uf['CE'] = 'Ceará'
  74.         $itens_uf['DF'] = 'Distrito Federal'
  75.         $itens_uf['ES'] = 'Espirito Santo'
  76.         $itens_uf['GO'] = 'Goiás'
  77.         $itens_uf['MA'] = 'Maranhão'
  78.         $itens_uf['MT'] = 'Mato Grosso'
  79.         $itens_uf['MS'] = 'Mato Grosso do Sul'
  80.         $itens_uf['MG'] = 'Minas Gerais'
  81.         $itens_uf['PA'] = 'Pará'
  82.         $itens_uf['PB'] = 'Paraiba'
  83.         $itens_uf['PR'] = 'Paraná'
  84.         $itens_uf['PE'] = 'Pernambuco'
  85.         $itens_uf['PI'] = 'Piauí'
  86.         $itens_uf['RJ'] = 'Rio de Janeiro'
  87.         $itens_uf['RN'] = 'Rio Grande do Norte'
  88.         $itens_uf['RS'] = 'Rio Grande do Sul'
  89.         $itens_uf['RO'] = 'Rondônia'
  90.         $itens_uf['RR'] = 'Roraima'
  91.         $itens_uf['SC'] = 'Santa Catarina'
  92.         $itens_uf['SP'] = 'São Paulo'
  93.         $itens_uf['SE'] = 'Sergipe'
  94.         $itens_uf['TO'] = 'Tocantins'
  95.         $estado->addItems($itens_uf); 
  96.  
  97.         //desabilitando campo chave primaria
  98.         $cod_pac->setEditable(False);
  99.         
  100.         //setando mascara
  101.         $data_nasc->setMask('dd/mm/yyyy'); 
  102.         $cep->setMask('99.999-999');
  103.         
  104.         //CRIANDO EXIT PARA BUSCA DE CEP
  105.         //$exit_action = New TAction(array($this, 'onCEP'));
  106.         //$cep->setExitAction($exit_action);
  107.         
  108.         //alimentando campos
  109.         $pais->setValue('BRASIL');
  110.         $data_inclusao->setValue(date('d/m/Y'));
  111.         
  112.         //desabilitando campos do sistema
  113.         $data_inclusao->setEditable(False);      
  114.         // create the form actions
  115.         $this->form->addQuickAction(_t('Save'), new TAction(array($this'onSave')), 'ico_save.png');
  116.         $this->form->addQuickAction(_t('New'),  new TAction(array($this'onEdit')), 'ico_new.png');
  117.         
  118.         // creates a DataGrid
  119.         $this->datagrid = new TQuickGrid;
  120.         $this->datagrid->setHeight(320);
  121.         
  122.         // creates the datagrid columns
  123.         $cod_pac $this->datagrid->addQuickColumn('Cód.Pac.''cod_pac''left'150);
  124.         $nome $this->datagrid->addQuickColumn('Nome''nome''left'600);
  125.         $cod_conv $this->datagrid->addQuickColumn('Cod.Conv.''cod_conv''left'100);
  126.         $nome_conv $this->datagrid->addQuickColumn('Convênio''convenio_nome''left'600);
  127.         $cpf $this->datagrid->addQuickColumn('CPF''cpf''left'200);
  128.         $cep $this->datagrid->addQuickColumn('CEP''cep''left'200);
  129.         $logradouro $this->datagrid->addQuickColumn('Logradouro''logradouro''left'800);
  130.         $numero $this->datagrid->addQuickColumn('Número''numero''left'150);
  131.         $bairro $this->datagrid->addQuickColumn('Bairro''bairro''left'600);
  132.         $cidade $this->datagrid->addQuickColumn('Cidade''cidade''left'600);
  133.         $estado $this->datagrid->addQuickColumn('Estado''estado''left'150);
  134.         $pais $this->datagrid->addQuickColumn('Pais''pais''left'200);
  135.         $data_nasc $this->datagrid->addQuickColumn('Dt.Nascimento''data_nasc''left'250);
  136.         $e_mail $this->datagrid->addQuickColumn('E-Mail''E_mail''left'800);
  137.         $tel_fixo $this->datagrid->addQuickColumn('Tel.Fixo''tel_fixo''left'250);
  138.         $celular $this->datagrid->addQuickColumn('Celular''celular''left'250);
  139.         $tel_contato $this->datagrid->addQuickColumn('Tel.Contato''tel_contato''left'250);
  140.         $data_inclusao $this->datagrid->addQuickColumn('Dt.Inclusão''data_inclusao''left'150);
  141.         
  142.         // create the datagrid actions
  143.         $edit_action   = new TDataGridAction(array($this'onEdit'));
  144.         $delete_action = new TDataGridAction(array($this'onDelete'));
  145.         
  146.         // add the actions to the datagrid
  147.         $this->datagrid->addQuickAction(_t('Edit'), $edit_action'cod_pac''ico_edit.png');
  148.         $this->datagrid->addQuickAction(_t('Delete'), $delete_action'cod_pac''ico_delete.png');
  149.         
  150.         //formatando datas
  151.         //$this->datagrid->Column->data_nasc->setMask('d/m/Y');  //DateTime::createFromFormat('Y-m-d', $object->data_nasc)->format( 'd/m/Y' );
  152.         
  153.         // create the datagrid model
  154.         $this->datagrid->createModel();
  155.         
  156.         // creates the page navigation
  157.         $this->pageNavigation = new TPageNavigation;
  158.         $this->pageNavigation->setAction(new TAction(array($this'onReload')));
  159.         $this->pageNavigation->setWidth($this->datagrid->getWidth());
  160.         
  161.         // create the datagrid model
  162.         $this->datagrid->createModel();
  163.         
  164.         // creates the page navigation
  165.         $this->pageNavigation = new TPageNavigation;
  166.         $this->pageNavigation->setAction(new TAction(array($this'onReload')));
  167.         $this->pageNavigation->setWidth($this->datagrid->getWidth());
  168.         
  169.         // create the page container
  170.         $container TVBox::pack$this->form$this->datagrid$this->pageNavigation);
  171.         parent::add($container);
  172.         
  173.     }
  174.     /**
  175.      * method onReload()
  176.      * Load the datagrid with the database objects
  177.      */
  178.     function onReload($param NULL)
  179.     {
  180.         try
  181.         {
  182.             // open a transaction with database 'info_clin'
  183.             TTransaction::open('info_clin');
  184.             
  185.             // creates a repository for Paciente
  186.             $repository = new TRepository('Paciente');
  187.             $limit 10;
  188.             // creates a criteria
  189.             $criteria = new TCriteria;
  190.             
  191.             // default order
  192.             if (empty($param['order']))
  193.             {
  194.                 $param['order'] = 'cod_pac';
  195.                 $param['direction'] = 'asc';
  196.             }
  197.             $criteria->setProperties($param); // order, offset
  198.             $criteria->setProperty('limit'$limit);
  199.             
  200.             if (TSession::getValue('Paciente_filter'))
  201.             {
  202.                 // add the filter stored in the session to the criteria
  203.                 $criteria->add(TSession::getValue('Paciente_filter'));
  204.             }
  205.             
  206.             // load the objects according to criteria
  207.             $objects $repository->load($criteriaFALSE);
  208.             
  209.             $this->datagrid->clear();
  210.             if ($objects)
  211.             {
  212.                 // iterate the collection of active records
  213.                 foreach ($objects as $object)
  214.                 {
  215.                     // add the object inside the datagrid
  216.                     $this->datagrid->addItem($object);
  217.                 }
  218.                 //converte datas para gravação e edição em formato BR
  219.                 $object->data_nasc DateTime::createFromFormat('Y-m-d'$object->data_nasc)->format'd/m/Y' ); 
  220.                 $object->data_inclusao DateTime::createFromFormat('Y-m-d'$object->data_inclusao)->format'd/m/Y' );
  221.                 //$object->cep = String::createFromFormat('99.999-999', $object->cep)->format('99.999-99');
  222.             }
  223.             
  224.                       
  225.             // reset the criteria for record count
  226.             $criteria->resetProperties();
  227.             $count$repository->count($criteria);
  228.             $this->pageNavigation->setCount($count); // count of records
  229.             $this->pageNavigation->setProperties($param); // order, page
  230.             $this->pageNavigation->setLimit($limit); // limit                
  231.             // close the transaction
  232.             TTransaction::close();
  233.             $this->loaded true;
  234.         }
  235.         catch (Exception $e// in case of exception
  236.         {
  237.             new TMessage('error''<b>Error</b> ' $e->getMessage()); // shows the exception error message
  238.             TTransaction::rollback(); // undo all pending operations
  239.         }
  240.     }
  241.     
  242.     /**
  243.      * method onDelete()
  244.      * executed whenever the user clicks at the delete button
  245.      * Ask if the user really wants to delete the record
  246.      */
  247.     function onDelete($param)
  248.     {
  249.         // define the delete action
  250.         $action = new TAction(array($this'Delete'));
  251.         $action->setParameters($param); // pass the key parameter ahead
  252.         
  253.         // shows a dialog to the user
  254.         new TQuestion(TAdiantiCoreTranslator::translate('Do you really want to delete ?'), $action);
  255.     }
  256.     
  257.     /**
  258.      * method Delete()
  259.      * Delete a record
  260.      */
  261.     function Delete($param)
  262.     {
  263.         try
  264.         {
  265.             // get the parameter $key
  266.             $key=$param['key'];
  267.             
  268.             TTransaction::open('info_clin'); // open the transaction
  269.             $object = new Paciente($keyFALSE); // instantiates the Active Record
  270.             $object->delete(); // deletes the object
  271.             TTransaction::close(); // close the transaction
  272.             
  273.             $this->onReload$param ); // reload the listing
  274.             new TMessage('info'TAdiantiCoreTranslator::translate('Record deleted')); // success message
  275.         }
  276.         catch (Exception $e// in case of exception
  277.         {
  278.             new TMessage('error''<b>Error</b> ' $e->getMessage()); // shows the exception error message
  279.             TTransaction::rollback(); // undo all pending operations
  280.         }
  281.     }
  282.     
  283.     /**
  284.      * method onSave()
  285.      * Executed whenever the user clicks at the save button
  286.      */
  287.     function onSave()
  288.     {
  289.         try
  290.         {
  291.             TTransaction::open('info_clin'); // open a transaction with database
  292.             
  293.             // get the form data into an active record Paciente
  294.             $object $this->form->getData('Paciente');
  295.             $this->form->validate(); // form validation
  296.             //converte data do BR para US - AQUI CONVERSÃO PARA SALVAR OS DADOS 
  297.             $object->data_nasc DateTime::createFromFormat('d/m/Y'$object->data_nasc)->format'Y-m-d' ); 
  298.             $object->data_inclusao DateTime::createFromFormat('d/m/Y'$object->data_inclusao)->format'Y-m-d' );
  299.             //retira caracteres da mascara do CEP
  300.             $object->cep str_replace('.','',$object->cep);
  301.             $object->cep str_replace('-','',$object->cep);           
  302.             $object->store(); // stores the object
  303.             //converte datas para gravação e edição em formato BR
  304.             $object->data_nasc DateTime::createFromFormat('Y-m-d'$object->data_nasc)->format'd/m/Y' ); 
  305.             $object->data_inclusao DateTime::createFromFormat('Y-m-d'$object->data_inclusao)->format'd/m/Y' );
  306.             $this->form->setData($object); // fill the form with the active record data
  307.             TTransaction::close(); // close the transaction
  308.             
  309.             new TMessage('info'TAdiantiCoreTranslator::translate('Record saved')); // success message
  310.             $this->onReload(); // reload the listing
  311.         }
  312.         catch (Exception $e// in case of exception
  313.         {
  314.             new TMessage('error''<b>Error</b> ' $e->getMessage()); // shows the exception error message
  315.             TTransaction::rollback(); // undo all pending operations
  316.         }
  317.     }
  318.     
  319.     /**
  320.      * method onEdit()
  321.      * Executed whenever the user clicks at the edit button da datagrid
  322.      */
  323.     function onEdit($param)
  324.     {
  325.         try
  326.         {
  327.             if (isset($param['key']))
  328.             {
  329.                 
  330.                 $key=$param['key']; // get the parameter $key
  331.                 TTransaction::open('info_clin'); // open a transaction with the database
  332.                 $object = new Paciente($key); // instantiates the Active Record
  333.                 //converte datas para gravação e edição em formato BR
  334.                 $object->data_nasc DateTime::createFromFormat('Y-m-d'$object->data_nasc)->format'd/m/Y' ); 
  335.                 $object->data_inclusao DateTime::createFromFormat('Y-m-d'$object->data_inclusao)->format'd/m/Y' );
  336.                 $this->form->setData($object); // fill the form with the active record data
  337.                 TTransaction::close(); // close the transaction
  338.             }
  339.             else
  340.             {
  341.                 $this->form->clear();
  342.             }
  343.         }
  344.         catch (Exception $e// in case of exception
  345.         {
  346.             new TMessage('error''<b>Error</b> ' $e->getMessage()); // shows the exception error message
  347.             TTransaction::rollback(); // undo all pending operations
  348.         }
  349.     }
  350.     
  351.     /**
  352.      * method show()
  353.      * Shows the page e seu conteúdo
  354.      */
  355.     function show()
  356.     {
  357.         // check if the datagrid is already loaded
  358.         if (!$this->loaded AND (!isset($_GET['method']) OR $_GET['method'] !== 'onReload') )
  359.         {
  360.             $this->onReloadfunc_get_arg(0) );
  361.         }
  362.         parent::show();
  363.     }
  364. }
  365. ?>
</Leandro>
NR

Leandro, você pode criar uma função no seu model da seguinte maneira:
  1. <?php
  2. public function get_cep_formatado()
  3. {
  4.      return preg_replace('(([0-9]{2,})([0-9]{3,})([0-9]{3,}))','\\\\1.\\\\2-\\\\3',$this->cep);
  5. }
  6. ?>


Para exibir na datagrid é só adicionar a coluna deste modo:
  1. <?php
  2. $cep $this->datagrid->addQuickColumn('CEP''cep_formatado''left'200); 
  3. ?>


Sempre que quiser exibir o cep formatado pode executar o código abaixo:
  1. <?php
  2. $object->cep_formatado;
  3. ?>
LB

Show Felipe, no datagrid funcionou tudo perfeito. Só no campo cep de entrada de dados, quando seleciono um registro no datagrid e o mesmo é exibido os campos acima dele o cep continua sem a formatação.

Obrigado pela ajuda se souber me dizer como faço para aparecer no formato também dentro do campo Tentry na exibição fico muito grato.

Abraço e desculpe na demora da resposta pois eu estava em viagem.
NR

Na função onEdit, do mesmo jeito que você já formata as datas:

  1. <?php
  2. $object->data_inclusao DateTime::createFromFormat('Y-m-d'$object->data_inclusao)->format'd/m/Y' );
  3. $object->cep $object->cep_formatado;
  4. ?>
LB

Nataniel, Show eu tinha feito isso no ONRELOAD e não tinha dado certo, errei o ponto dei vacilo de não tentar no onEdit.
Muito obrigado pela ajuda meus amigos.
Eu estou iniciando agora com PHP orientado a objetos e estou apanhando um pouco, ou melhor, bastante. Comprei o livro do FrameWork mas tem muita coisa que preciso que não encontro nele, se puderem me indicar um bom livro de referencia de PHP com orientação objeto fico grato a vocês.

Abraços.
NR

Leandro, tem um livro do Pablo sobre OO muito bom:

www.saraiva.com.br/php-programando-com-orientacao-a-objetos-3-ed-2015-92
LB

Caramba vi lá parece ser muito bom, pena que está esgotado. Mas vou procurar em outras editoras para ver se ainda acho. Com certeza vou compra-lo.
Obrigado Nataniel.
AR

<? Olá, estou usando TElement está perfeito
php
$script = new TElement('script');
$script->type = 'text/javascript';
$javascript = "$('select[name="cliente_pessoa"]').change(function(event){
var cliente_pessoa = $('select[name="cliente_pessoa"]').val();
if(cliente_pessoa == 'F') {
$('input[name="cliente_cpf_cnpj"]').val('');
$('input[name="cliente_cpf_cnpj"]').attr({onkeypress:'return tentry_mask(this,event,"999.999.999-99")'});
}
if(cliente_pessoa == 'J') {
$('input[name="cliente_cpf_cnpj"]').val('');
$('input[name="cliente_cpf_cnpj"]').attr({onkeypress:'return tentry_mask(this,event,"99.999.999/9999-99")'});
}
});
";

$script->add($javascript);
parent::add($script);


Só que no onEdit, o campo é editado sem a mascara, aí preciso usar uma função Formatar_Cpf_Cnpj, que edita com uma mascara, só que a mascara não é fixa como $script->type = 'text/javascript';. Tem uma solução pra isso ?

$object->cliente_cpf_cnpj = $object->formatar_Cpf_Cnpj;


Obrigado.
?>