Crie seu módulo de Auto-Completar endereço - Comunidade Magento - Onde a União Faz a Força!!!
Neste exemplo faremos a alteração apenas no formulário de endereço de cobrança da página de checkout – ao finalizar o pedido.
Todavia, o processo será exatamente o mesmo caso queira aplicar o mesmo efeito em outras páginas do site.
Não edite este arquivo.
Faça uma cópia deste arquivo para o diretório "default/default" ou para seu "pacote/tema" customizado – e faça suas alterações na cópia.
Procure pelo input com id="billing:postcode" e adicione o evento onblur="buscar_end()".
Como você pode observar, não é um código difícil de ler.
Iniciamos informando a url de consulta do nosso módulo (que iremos criar na sequência).
Abaixo nós passamos como parâmetro AJAX o cep informado no campo "billing:postcode".
E por fim, se o código for executado com sucesso, nós recuperamos os valores por JSON e transferimos para os inputs correspondentes.
É importante que você siga todos os passos à risca, inclusive o nome dos diretórios, espaços, maiúsculas e minúsculas.
Depois que você ver seu exemplo funcionando, então você estará livre para fazer suas alterações.
Pra começar, informamos a versão do nosso módulo.
Você deve encontrar esses parâmetros em todos os módulos.
Na sequência informamos o "routers", que será nossa url de acesso ao módulo no frontend.
Com o frontName "autocompletar", como indicado no getUrl do seu javascript.
Acima do frontName temos o module "MarioSAM_AutoCompletar", que é a classe a ser executada quando alguém fizer uma solicitação à esse frontName.
Obviamente ainda não temos essa classe, ainda…
A palavra Controller.php é para identificação do framework MVC utilizado pelo Magento.
O que importa para nós é o que vem antes dessa palavra, neste exemplo: Ajax.
Veja que precisamos passar essa palavra no getUrl do javascript para que ele saiba qual controller deve ser executado.
Dentro deste arquivo temos uma function com nome "enderecoAction()", onde Action() também faz parte do controle interno MVC utilizado pelo Magento, então o importante é o que vem antes dessa palavra, neste exemplo: endereco.
Que também deve ser informado no código javascript getUrl, para que ele saiba qual função deve ser executada dentro deste controlador.
O que estamos fazendo aqui é uma solicitação de consulta à outro site, passando o cep como parâmetro e aguardando um retorno já formatado em JSON.
O site em questão é o republicavirtual, que infelizmente possui uma base de dados já defasada.
Dependendo das configurações do seu servidor, a função @file_get_contents pode apresentar erro.
Nesse caso consulte o suporte da sua hospedagem ou procure ajuda no fórum da Escola Magento.
Você também poderia fazer a consulta em outro site, como por exemplo: site dos correios.
Vamos falar sobre isso mais adiante, antes, precisamos informar ao Magento que existe um novo módulo no sistema.
O Magento possui um diretório que lista quais módulos o sistema deve iniciar.
E como acabamos de criar um novo módulo, precisamos informar ao sistema que este novo módulo deve ser carregado.
E com isso você já deve ter um formulário de endereço que preenche automaticamente os campos sempre que o cep é informado.
Se isso não aconteceu, reveja o passo-a-passo, ou procure ajuda no fórum.
O problema é que esse processo além de ser "xunxo", ainda é muito vulnerável.
Qualquer alteração no código de retorno html, ou mesmo na url de consulta, ou ainda mesmo nas permissões de requisição, poderia interromper de imediato suas consultas à endereços.
E você ficaria sem saber se algo foi alterado na estrutura, ou se é apenas o site dos correios fora do ar (de novo!).