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 Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


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