Página 4 de 9

Re: [TUTORIAL] CEP automático - Auto Complete (Cadastro)

Enviado: 02 Dez 2011, 22:58
por fabioppg
thyagosouza escreveu:
Oi Fabio, ainda não consegui entender pra que serve esse código. Na hora do cadastro quando a pessoa digita o CEP, automaticamente ele completa os campos padrões do endereço?.. se for isso nao está acontecendo comigo e minha versão é 1.4.9.5 :roll: ... se possivel de uma olhada no meu site para ver, que ele está com todas modificações feitas mas nao tive êxito. http://www.helpvideocursos.com.br

thyagosouza, desculpa a demora. Estou ralando muito, estou sem tempo de tirar dúvidas e compartilhar com o pessoal da comunidade. Resumindo .. Dei uma olhada em sua loja .. O problema é simples. você só NÃO fez o primeiro passo do Tutorial .. rsrs

Você precisa criar um método dentro do controle da sua página chamada: cepautomatico ..

Como identifiquei:

Imagem

404 Not Found: "Página não foi encontrada." A página que não foi encontrada, é exatamente o retorno do cep.

Põe lá que irá funcionar .. Observe este tópico, pois o pessoal da comunidade estão melhorando cada vez mais o cep automático. Desde que lancei aqui a primeira versão eles ajudaram muito à corrigir alguns bugs que encontrados..

Forte abraço, boas vendas !!!

Re: [TUTORIAL] CEP automático - Auto Complete (Cadastro)

Enviado: 16 Dez 2011, 12:34
por Renato Frota
observe que ele diz "antes do ultimo } ?"

ou seja, antes da ultima chave também...

tentem aí. se não der, me avisem.

Re: [TUTORIAL] CEP automático - Auto Complete (Cadastro)

Enviado: 16 Dez 2011, 20:19
por Davi
Renato Frota escreveu:observe que ele diz "antes do ultimo } ?"

ou seja, antes da ultima chave também...

tentem aí. se não der, me avisem.

Estava dando erro de sintaxe, fiz o que o Renato disse colocar antes da }, eu estava colocando só antes do "?"
Não deu mais o erro, a pagina carrego normalmente, porem ao colocar o CEP nada mudou!

Alguem fez com o vQmod ?

Re: [TUTORIAL] CEP automático - Auto Complete (Cadastro)

Enviado: 20 Dez 2011, 13:43
por juarez321
Boa tarde Pessoal, eu estou tentando colocar esse codigo no OC149 e não consegui, alguem poderia me dizer exatamente eu colocarias os codigos, tipo, apos a linha xxxxxx, eu não sei onde começa e onde terminha uma class.
eu estou pra comocar uma loja no ar e acho esse recorso muito legal pra o cliente.
um abraço e obrigado a quem poder me ajudar

quem quizer pode dar uma olhada na loja www.eletronicamatias.com.br/149

Re: [TUTORIAL] CEP automático - Auto Complete (Cadastro)

Enviado: 27 Dez 2011, 17:09
por kt666
Parabéns pelo módulo viu?

Eu estava tentando criar um vqmod dele, mas meus conhecimentos não foram suficientes, não sai do lugar e resolvi por o código na unha mesmo.

Re: [TUTORIAL] CEP automático - Auto Complete (Cadastro)

Enviado: 28 Dez 2011, 10:03
por caneto
Fiz o Vqmod.

A rotina ainda não deu para testar pois o firewall do meu trabalho bloqueou o link.

Para rodar precisa ter instalado o VQmod na versão 2.15 de preferencia, é o que tenho. e copiar o contendo abaixo e criar no diretorio XML um arquivo (CEPAutomatic.xml) e colar e salvar.
Código: Selecionar todos
<modification>

	<id>CEP Automatico</id>
	<version>1.0.0</version>
	<vqmver>2.1.5</vqmver>
	<author>Caneto</author>

	<file name="catalog/controller/account/register.php">
		<operation>
			<search position="before"><![CDATA[public function zone() {]]></search>
			<add><![CDATA[
			    // Inicio - WebService - Cep Automatico
				public function cepautomatico(){
          
				if (isset($this->request->get['cep'])){
					$output = @file_get_contents('http://republicavirtual.com.br/web_cep.php?cep='.urlencode($this->request->get['cep']).'&formato=json');
					$endereco=json_decode($output);//IMPORTANTE  o OpenCart trata o array como uma classe!! ( nao sabia disso rsrs)
					$this->load->model('localisation/zone');//carrega o modelo que trata as zones.            
					//IMPORTANTE  metodo abaixo eu criei...codigo no bloco abaixo, 30 e o id do pais( CONFIRAM SE 30 E O BRASIL PARA VOCES), e o uf e o que vem nao precisa mexer
					$results = $this->model_localisation_zone->getZonesByCountryIdAndCode(30,$endereco->uf);

					$endereco->uf=$results['zone_id'];//troca o uf pelo zone_id
					$output=json_encode($endereco);//encode pro retorno
					$this->response->setOutput(utf8_encode($output), $this->config->get('config_compression'));//ja inclui o utf8 pra acentuacao...
				}
				
				}
				// Fim - WebService - Cep automatico 
			]]></add>
		</operation>
	</file>

	<file name="catalog/view/theme/default/template/account/register.tpl">
		<operation>
			<search position="before" ><![CDATA[<?php echo $footer; ?>]]></search>
			<add><![CDATA[
			<script  type="text/javascript">
			$(function(){
				$('input[name="postcode"]').blur(function(){
					     //$('#carregando_cep').show(); essa linha e por que coloquei uma imagem de um gif do lado campo para mostrar quando atualizar...
      
					var cep = $.trim($('input[name="postcode"]').val().replace('-', ''));
					$.get('index.php?route=account/register/cepautomatico',{cep: cep},function(endereco){
						var obj = $.parseJSON(endereco)// passei para json entao aqui faz o parse e cria o objeto (obj)
						var uf       = obj.uf;
						var bairro   = obj.bairro;
						var cidade   = obj.cidade;
						var endereco = obj.tipo_logradouro+" "+obj.logradouro;
						var res      = obj.resultado;
						if(res){
							$('input[name="address_1"]').val(endereco);  // preenche o campo endereco 1 com o endereco
							$('input[name="city"]').val(cidade);  // preenche o campo cidade
							$('input[name="address_2"]').val(bairro); // preenche o campo emdereco 2 com o bairro
							$('select[name="zone_id"]').val(uf); //preenche o estado com o ID  zone (estado)
						}
					});
					//$('#carregando_cep').hide(); esconder a imagem de loading
				});
			});
			</script>
			]]></add>
		</operation>
	</file>

	<file name="catalog/model/localisation/zone.php">
		<operation>
			<search position="before"><![CDATA[public function getZonesByCountryId($country_id) {]]></search>
			<add><![CDATA[
			public function getZonesByCountryIdAndCode($country_id,$code) {   
          
             $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "zone WHERE country_id = '" . (int)$country_id . "' AND  code= '" . $code . "' AND status = '1' ORDER BY name LIMIT 1");
       
             return $query->row;      
			}
			]]></add>
		</operation>
	</file>

</modification>


Re: [TUTORIAL] CEP automático - Auto Complete (Cadastro)

Enviado: 17 Jan 2012, 00:08
por hmarchiori
Galera,

meu servidor é Windows, e o file_get_contents é desabilitado por segurança.

Alguem saberia "traduzir" a parte do código que usa o file_get_contents em cUrl?

Li vários artigos na net que dizem que a forma de contornar seria cUrl, mas não sei como fazer.

Valeu!

Re: [TUTORIAL] CEP automático - Auto Complete (Cadastro)

Enviado: 17 Jan 2012, 12:41
por Davi
caneto escreveu:Fiz o Vqmod.

A rotina ainda não deu para testar pois o firewall do meu trabalho bloqueou o link.

Para rodar precisa ter instalado o VQmod na versão 2.15 de preferencia, é o que tenho. e copiar o contendo abaixo e criar no diretorio XML um arquivo (CEPAutomatic.xml) e colar e salvar.
Código: Selecionar todos
<modification>

	<id>CEP Automatico</id>
	<version>1.0.0</version>
	<vqmver>2.1.5</vqmver>
	<author>Caneto</author>

	<file name="catalog/controller/account/register.php">
		<operation>
			<search position="before"><![CDATA[public function zone() {]]></search>
			<add><![CDATA[
			    // Inicio - WebService - Cep Automatico
				public function cepautomatico(){
          
				if (isset($this->request->get['cep'])){
					$output = @file_get_contents('http://republicavirtual.com.br/web_cep.php?cep='.urlencode($this->request->get['cep']).'&formato=json');
					$endereco=json_decode($output);//IMPORTANTE  o OpenCart trata o array como uma classe!! ( nao sabia disso rsrs)
					$this->load->model('localisation/zone');//carrega o modelo que trata as zones.            
					//IMPORTANTE  metodo abaixo eu criei...codigo no bloco abaixo, 30 e o id do pais( CONFIRAM SE 30 E O BRASIL PARA VOCES), e o uf e o que vem nao precisa mexer
					$results = $this->model_localisation_zone->getZonesByCountryIdAndCode(30,$endereco->uf);

					$endereco->uf=$results['zone_id'];//troca o uf pelo zone_id
					$output=json_encode($endereco);//encode pro retorno
					$this->response->setOutput(utf8_encode($output), $this->config->get('config_compression'));//ja inclui o utf8 pra acentuacao...
				}
				
				}
				// Fim - WebService - Cep automatico 
			]]></add>
		</operation>
	</file>

	<file name="catalog/view/theme/default/template/account/register.tpl">
		<operation>
			<search position="before" ><![CDATA[<?php echo $footer; ?>]]></search>
			<add><![CDATA[
			<script  type="text/javascript">
			$(function(){
				$('input[name="postcode"]').blur(function(){
					     //$('#carregando_cep').show(); essa linha e por que coloquei uma imagem de um gif do lado campo para mostrar quando atualizar...
      
					var cep = $.trim($('input[name="postcode"]').val().replace('-', ''));
					$.get('index.php?route=account/register/cepautomatico',{cep: cep},function(endereco){
						var obj = $.parseJSON(endereco)// passei para json entao aqui faz o parse e cria o objeto (obj)
						var uf       = obj.uf;
						var bairro   = obj.bairro;
						var cidade   = obj.cidade;
						var endereco = obj.tipo_logradouro+" "+obj.logradouro;
						var res      = obj.resultado;
						if(res){
							$('input[name="address_1"]').val(endereco);  // preenche o campo endereco 1 com o endereco
							$('input[name="city"]').val(cidade);  // preenche o campo cidade
							$('input[name="address_2"]').val(bairro); // preenche o campo emdereco 2 com o bairro
							$('select[name="zone_id"]').val(uf); //preenche o estado com o ID  zone (estado)
						}
					});
					//$('#carregando_cep').hide(); esconder a imagem de loading
				});
			});
			</script>
			]]></add>
		</operation>
	</file>

	<file name="catalog/model/localisation/zone.php">
		<operation>
			<search position="before"><![CDATA[public function getZonesByCountryId($country_id) {]]></search>
			<add><![CDATA[
			public function getZonesByCountryIdAndCode($country_id,$code) {   
          
             $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "zone WHERE country_id = '" . (int)$country_id . "' AND  code= '" . $code . "' AND status = '1' ORDER BY name LIMIT 1");
       
             return $query->row;      
			}
			]]></add>
		</operation>
	</file>

</modification>


Copiei seu código criei o arquivo .xml e joguei la na pasta xml...
Não mudou nada na pagina do cadastro! =/
não entendo muito coisa mais quando chegar em casa vou dar uma olhada com mais calma

Vlw

Re: [TUTORIAL] CEP automático - Auto Complete (Cadastro)

Enviado: 09 Mar 2012, 18:46
por allyssonharry
Perfeito Amigo!, os pequenos erros são verificados pouco a pouco vou analizar e melhorar ainda mais esse script! valeu e abraços...

Re: [TUTORIAL] CEP automático - Auto Complete (Cadastro)

Enviado: 15 Mar 2012, 14:31
por joaoteofilo
Pessoal, acho que faltou colocar um campo para por o número em separado, porque muitas vezes o cliente não se atenta a isso! :)
Como não tenho muitos conhecimentos, peço que alguem tente. Obrigado!