- 28 Out 2011, 11:25
#11021
Olá a todos meu primeiro post aqui....
Bom fiz umas melhorias para que o cep também complete o estado.....
troquei o formato para json então vou postar tudo aqui...
Estou utilizando a última versão no momento, 1.5.1.3.(testado apenas nessa)
no final do catalog\view\theme\default\template\account\register.tpl
catalog\model\localisation\zone.php
Qualquer problema reportem.
Qualquer melhoria é muito bem vinda!
Edit: adicionar a versão do OpenCart
Bom fiz umas melhorias para que o cep também complete o estado.....
troquei o formato para json então vou postar tudo aqui...
Estou utilizando a última versão no momento, 1.5.1.3.(testado apenas nessa)
no final do catalog\view\theme\default\template\account\register.tpl
Código: Selecionar todos
catalog\controller\account\register.php
<script type="text/javascript">
$(function(){
$('input[name="postcode"]').blur(function(){
//$('#carregando_cep').show(); essa linha é 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 então 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 endereço 1 com o endereço
$('input[name="city"]').val(cidade); // preenche o campo cidade
$('input[name="address_2"]').val(bairro); // preenche o campo emdereço 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>
Código: Selecionar todos
// Início - WebService - Cep Automático
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!! ( não sabia disso rsrs)
$this->load->model('localisation/zone');//carrega o modelo que trata as zones.
//IMPORTANTE metodo abaixo eu criei...código no bloco abaixo, 30 é o id do país( CONFIRAM SE 30 É O BRASIL PARA VOCÊS), e o uf é o que vem não 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'));//já inclui o utf8 pra acentuação...
}
}
// Fim - WebService - Cep automático
catalog\model\localisation\zone.php
Código: Selecionar todos
Bem simples, mas funcional./******************Importante esse metódo não vem na instalação eu criei e portanto sem ele não vai funcionar o código acima*****************************/
//só adicionar no fim do arquivo antes do último } ?>
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;
}
Qualquer problema reportem.
Qualquer melhoria é muito bem vinda!
Edit: adicionar a versão do OpenCart
Editado pela última vez por eestevao em 28 Out 2011, 13:55, em um total de 1 vez.


