Você esta aqui: Home Tutoriais Auto-Completar Endereço com Ajax

Módulo da Cielo para Magento

Auto-Completar Endereço com Ajax

E-mail Imprimir PDF

O Mario SAM, uma pessoa que também ajuda bastante a comunidade Magento com seu blog e seus maravilhosos tutoriais atacou novamente, agora criando um módulo que todo mundo quer.

Leia atentamente abaixo como ele ensina a fazer a busca do endereço após o cliente colocar o CEP. Reparem que o tutorial dele é somente para quando o cliente registra a conta no CHECKOUT, mais precisamente quando ele coloca o endereço de ENTREGA. Mas sabemos que muitos tem o mesmo endereço de ENTREGA e de COBRANÇA. Aprendam a fazer do jeito dele e depois logo abaixo do tutorial dele tem uma explicação de como colocar tanto no endereço de ENTREGA quanto de COBRANÇA.

Um detalhe IMPORTANTE! O Módulo no momento não funciona com aqueles estados brasileiros inseridos no MySQL e caso algum CEP retorne somente cidade e estado (CEP geral), ele não coloca. Tem que retornar Endereço, Bairro, Cidade e Estado. Havendo atualizações, vocês ficarão sabendo por aqui e pelo fórum.

 

Clique na imagem abaixo para ver o tutorial completo.

 

ConsultaCepdosCorreios

 

 

Eis o que muita gente estava procurando. Um modo de auto-completar as informações de endereço do cliente no cadastro de forma automatizada usando os recursos do Ajax.

Minha idéia inicial era apenas mostrar como usar Ajax no Magento, pois tem muita gente fazendo barbaridades por ai. Mas o Ajax é só um caminho para alguma ação, então pelas dúvidas do pessoal no fórum, vi que o melhor seria aproveitar este recurso do Ajax para recuperar e preencher informações do endereço de forma automatizada.

Para este exemplo estarei efetuando uma busca na base de dados da RepúblicaVirtual, um site que disponibiliza de forma gratuita consultas a cep’s e endereços.

Mas foi então que reparei que havia outro problema: a consulta crossdomain! Ou seja, recuperar informações que não estão no meu servidor, estão em outro domínio, e por questões de segurança o Ajax não funciona crossdomain, então eu teria que criar uma rotina em PHP apenas para fazer essa consulta e devolver ao Ajax.

Pra seguir o padrão do Magento e não avacalhar a po@#$ toda, como eu tenho visto por ai. Resolvi criar um módulo local para isso. Então nesse post além de aprender a usar o Ajax no Magento e ainda aproveitar pra preencher o endereço do cliente usando o cep, você ainda vai ver o básico de criação de um módulo.

Atenção! É extremamente importante que você siga exatamente como está no exemplo, nomes, maiúsculas, minísculas, espaços, vírgulas, pontos, tudo da maneira como for apresentado. Depois de ver funcionando então você faz as adaptações necessárias para o seu projeto.

Primeiro Passo: Alterar o arquivo shipping.phtml que fica em app -> desgin -> frontend -> base -> default -> template -> checkout -> onepage (tela de cadastro de endereço ao finalizar o pedido). Alterei a posição do campo “cep” para ficar entre o campo “Profissão” e o campo “Endereço“, basta mudar o html de lugar.

<li>
 <div>
 <label for="shipping:postcode"><em>*</em></label>
 <div>
 <input type="text" title="" name="shipping[postcode]" id="shipping:postcode" value="" onchange="shipping.setSameAsBilling(false);" onblur="buscar_end();" />
 </div>
 </div>
 <div></div>
 </li>

Repare que foi adicionado um evento “onblur” no campo cep que chama a função “buscar_end()“. Este bloco acima que exibe o cep eu coloquei logo acima da linha: <li class=”wide”> onde tem o label do “shipping:street1” que como você deve ter observado é o campo “Endereço“. Com isso você já deve ter uma tela parecida com essa:

Ainda nessa página coloque o código Ajax responsável por enviar, receber e formatar os dados no formulário. Coloque logo acima do campo “cep” que você mudou de lugar.

<script type="text/javascript">
 //<![CDATA[
 function buscar_end() {
 var url = '';
 
 new Ajax.Request( url, {    method: 'post',
 parameters: 'cep='+$('shipping:postcode').value,
 onComplete: function(transport) {
 var res = transport.responseText.evalJSON();
 
 if ( res.resultado == '1' ) {
 $('shipping:street1').value = res.tipo_logradouro+' '+res.logradouro;
 if ($('shipping:street2')) $('shipping:street2').value = res.bairro;
 $('shipping:city').value = res.cidade;
 $('shipping:region').value = res.uf;
 }
 }
 });
 }
 //]]>
 </script>

Agora a segunda parte do post,

Vá até a pasta

Atenção! Lembre-se dos problemas com a digitação e nomes, faça igual o exemplo!

criar o módulo que se comunica com o Ajax e com o site da RepúblicaVirtual.
app -> code -> local (se não existir local crie!), e dentro da pasta “local” crie uma pasta chamada “MarioSam“, dentro da pasta “MarioSam” crie uma pasta chamada “RepublicaVirtual“, dentro da pasta “RepublicaVirtual” crie duas pastas “controllers” e “etc“.

Esse é o arquivo onde as coisas acontecem, ele que vai ser chamado pelo Ajax, que vai se comunicar com o site da RepublicaVirtual e vai devolver os dados para a página.

Agora vamos criar o arquivo “config.xml” que fica dentro da pasta “etc“. Ele que mapeia a

URL
do seuController acima para o modelo MVC do framework usado pelo Magento, além de outras informações relevantes ao módulo como por exemplo a versão.

Agora a segunda parte do post, criar o módulo que se comunica com o Ajax e com o site da RepúblicaVirtual.

Vá até a pasta app -> code -> local (se não existir local crie!), e dentro da pasta “local” crie uma pasta chamada “MarioSam“, dentro da pasta “MarioSam” crie uma pasta chamada “RepublicaVirtual“, dentro da pasta “RepublicaVirtual” crie duas pastas “controllers” e “etc“.

Atenção! Lembre-se dos problemas com a digitação e nomes, faça igual o exemplo!

Agora na pasta “controllers” vamos criar o arquivo AjaxController.php e colocar o seguinte código:

<?php
class MarioSam_RepublicaVirtual_AjaxController extends Mage_Core_Controller_Front_Action {
 
 public function enderecoAction() {
 echo @file_get_contents('http://republicavirtual.com.br/web_cep.php?cep='.urlencode($this->getRequest()->getParam('cep', false)).'&formato=json');
 }
 
}

 

Esse é o arquivo onde as coisas acontecem, ele que vai ser chamado pelo Ajax, que vai se comunicar com o site da RepublicaVirtual e vai devolver os dados para a página.

Agora vamos criar o arquivo “config.xml” que fica dentro da pasta “etc“. Ele que mapeia a URL do seuController acima para o modelo MVC do framework usado pelo Magento, além de outras informações relevantes ao módulo como por exemplo a versão.

<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<MarioSam_RepublicaVirtual>
<version>0.0.1</version>
</MarioSam_RepublicaVirtual>
</modules>
<frontend>
<routers>
<republicavirtual>
<use>standard</use>
<args>
<module>MarioSam_RepublicaVirtual</module>
<frontName>republicavirtual</frontName>
</args>
</republicavirtual>
</routers>
</frontend>
</config>

E agora por último, vamos ativar o módulo no sistema. Senão não vai funcionar. Para isso vá até a pasta app -> etc -> modules e crie um arquivo chamado “MarioSam_RepublicaVirtual.xml” com o seguinte conteúdo:

<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<MarioSam_RepublicaVirtual>
<active>true</active>
<codePool>local</codePool>
</MarioSam_RepublicaVirtual>
</modules>
</config>

Pronto! Módulo ativado no sistema. Agora basta realizar os testes e posteriormente algumas adaptações de código se achar necessário.

Ficou com dúvidas, teve dificuldades com o código? Use o fórum, não irei responder nada pelos comentários do blog. Mas fique a vontade para dar sugestões e idéias.

Sucesso!

Fonte: http://magento.mariosam.com/dicas/completar-com-ajax

 

 

Agora aqui o que precisamos fazer para a busca ser realizada tanto no endereço de ENTREGA quanto de COBRANÇA.

Veja que no arquivo shipping.phtml é colocado um javascript com function:

function buscar_end() {

E também tem o onblur:

onblur="buscar_end();"

Mas você não pode colocar isto igual em 2 arquivos. Por isso edite o arquivo SHIPPING.PHTML trocando os códigos por:

function buscar_end_shipping() {

E também no onblur:

onblur="buscar_end_shipping();"

Agora abra o arquivo BILLING.PHTML e faça o mesmo processo do shipping.phtml, mas inclua o function e onblur diferente, ficando assim:

function buscar_end_billing() {

onblur="buscar_end_billing();"

E no billing.phtml também tem que trocar esta parte do javascript:

---

 

if ( res.resultado == '1' ) {
$('shipping:street1').value = res.tipo_logradouro+' '+res.logradouro;
if ($('shipping:street2')) $('shipping:street2').value = res.bairro;
$('shipping:city').value = res.cidade;
$('shipping:region').value = res.uf;

 

Ficando assim:

if ( res.resultado == '1' ) {
$('billing:street1').value = res.tipo_logradouro+' '+res.logradouro;
if ($('billing:street2')) $('billing:street2').value = res.bairro;
$('billing:city').value = res.cidade;
$('billing:region').value = res.uf;

Bom, segue os códigos dos arquivos billing.phtml e shipping.phtml para verificarem:

Arquivo billing.phtml:

 

<form id="co-billing-form" action="">
<fieldset>
<ul class="form-list">
 
<li class="wide">
<label for="billing-address-select"></label>
<div class="input-box">
 
 
 
 
<li id="billing-new-address-form" style="display:none;">
<fieldset>
<input type="hidden" name="billing[address_id]" value="" id="billing:address_id" />
<ul>
<li class="fields"></li>
<li class="fields">
<div class="field">
<label for="billing:company"></label>
<div class="input-box">
<input type="text" id="billing:company" name="billing[company]" value="" title="" class="input-text" />
</div>
</div>
 
<div class="field">
<label for="billing:email" class="required"><em>*</em></label>
<div class="input-box">
<input type="text" name="billing[email]" id="billing:email" value="" title="" class="input-text validate-email required-entry" />
</div>
</div>
 
</li>
<script type="text/javascript">
//<![CDATA[
function buscar_end_billing() {
var url = '';
 
new Ajax.Request( url, {    method: 'post',
parameters: 'cep='+$('billing:postcode').value,
onComplete: function(transport) {
var res = transport.responseText.evalJSON();
 
if ( res.resultado == '1' ) {
$('billing:street1').value = res.tipo_logradouro+' '+res.logradouro;
if ($('billing:street2')) $('billing:street2').value = res.bairro;
$('billing:city').value = res.cidade;
$('billing:region').value = res.uf;
}
}
});
}
//]]>
</script>
 <li>
<div class="field">
<label for="billing:postcode" class="required"><em>*</em></label>
<div class="input-box">
<input type="text" title="" name="billing[postcode]" id="billing:postcode" value="" class="input-text validate-zip-international required-entry" onblur="buscar_end_billing();" />
</div>
</div>
 </li>
<li class="wide">
<label for="billing:street1" class="required"><em>*</em></label>
<div class="input-box">
<input type="text" title="" name="billing[street][]" id="billing:street1" value="" class="input-text required-entry" />
</div>
</li>
 
<li class="wide">
<div class="input-box">
<input type="text" title="" name="billing[street][]" id="billing:street" value="" class="input-text" />
</div>
</li>
 
<li class="fields">
<div class="field">
<label for="billing:city" class="required"><em>*</em></label>
<div class="input-box">
<input type="text" title="" name="billing[city]" value="" class="input-text required-entry" id="billing:city" />
</div>
</div>
<div class="field">
<label for="billing:region_id" class="required"><em>*</em></label>
<div class="input-box">
<select id="billing:region_id" name="billing[region_id]" title="" class="validate-select" style="display:none;">
<option value=""></option>
</select>
<script type="text/javascript">
//<![CDATA[
$('billing:region_id').setAttribute('defaultValue',  "");
//]]>
</script>
<input type="text" id="billing:region" name="billing[region]" value=""  title="" class="input-text" style="display:none;" />
</div>
</div>
</li>
<li class="fields">
<div class="field">
<label for="billing:country_id" class="required"><em>*</em></label>
<div class="input-box">
 
</div>
</div>
</li>
<li lang="fields">
<div class="field">
<label for="billing:telephone" class="required"><em>*</em></label>
<div class="input-box">
<input type="text" name="billing[telephone]" value="" title="" class="input-text required-entry" id="billing:telephone" />
</div>
</div>
<div class="field">
<label for="billing:fax"></label>
<div class="input-box">
<input type="text" name="billing[fax]" value="" title="" class="input-text" id="billing:fax" />
</div>
</div>
</li>
 
 
 
 
 
<li class="fields">
 
<div class="field">
 
 
 
 
<div class="field">
 
 
 
 
 
 
 
 
 
<li>
 
 
 
</li>
 
 
 
<li class="fields" id="register-customer-password">
<div class="field">
<label for="billing:customer_password" class="required"><em>*</em></label>
<div class="input-box">
<input type="password" name="billing[customer_password]" id="billing:customer_password" title="" class="input-text required-entry validate-password" />
</div>
</div>
<div class="field">
<label for="billing:confirm_password" class="required"><em>*</em></label>
<div class="input-box">
<input type="password" name="billing[confirm_password]" title="" id="billing:confirm_password" class="input-text required-entry validate-cpassword" />
</div>
</div>
</li>
 
 
<li class="control">
<input type="checkbox" name="billing[save_in_address_book]" value="1" title="" id="billing:save_in_address_book" onchange="shipping.setSameAsBilling(false);" checked="checked" class="checkbox" /><label for="billing:save_in_address_book">
 
 
<li class="no-display"><input type="hidden" name="billing[save_in_address_book]" value="1" /></li>
 
 
 
 
 
<li class="control">
<input type="radio" name="billing[use_for_shipping]" id="billing:use_for_shipping_yes" value="1" checked="checked" title="" onclick="$('shipping:same_as_billing').checked = true;" class="radio" /><label for="billing:use_for_shipping_yes"></label></li>
<li class="control">
<input type="radio" name="billing[use_for_shipping]" id="billing:use_for_shipping_no" value="0" checked="checked" title="" onclick="$('shipping:same_as_billing').checked = false;" class="radio" /><label for="billing:use_for_shipping_no">
 
 
 
 
<input type="hidden" name="billing[use_for_shipping]" value="1" />
 
<div class="buttons-set" id="billing-buttons-container">
<p class="required"></p>
<button type="button" title="" class="button" onclick="billing.save()"><span><span></span></span></button>
<span class="please-wait" id="billing-please-wait" style="display:none;">
<img src="/" alt="" title="" class="v-middle" />
</span>
</div>
</fieldset>
</form>
<script type="text/javascript">
//<![CDATA[
var billing = new Billing('co-billing-form', 'address/', '');
var billingForm = new VarienForm('co-billing-form');
 
//billingForm.setElementsRelation('billing:country_id', 'billing:region', '', '');
$('billing-address-select') && billing.newAddress(!$('billing-address-select').value);
 
var billingRegionUpdater = new RegionUpdater('billing:country_id', 'billing:region', 'billing:region_id', countryRegions, undefined, 'billing:postcode');
//]]>
</script>

 

 

Arquivo Shipping.phtml:

 

 

<form action="" id="co-shipping-form">
<ul class="form-list">
 
<li class="wide">
<label for="shipping-address-select"></label>
<div class="input-box">
 
 
 
 
<li id="shipping-new-address-form" style="display:none;">
<fieldset>
<input type="hidden" name="shipping[address_id]" value="" id="shipping:address_id" />
<ul>
<li class="fields"><?php echo $this->getLayout()->createBlock('customer/widget_name')->setObject($this->getAddress())->setFieldIdFormat('shipping:%s')->setFieldNameFormat('shipping[%s]')->setFieldParams('onchange="shipping.setSameAsBilling(false)"')->toHtml() ?></li>
<li class="fields">
<div class="fields">
<label for="shipping:company"></label>
<div class="input-box">
<input type="text" id="shipping:company" name="shipping[company]" value="" title="" class="input-text" onchange="shipping.setSameAsBilling(false);" />
</div>
</div>
 
<div class="fields">
<label for="shipping:email" class="required"><em>*</em></label>
<div class="input-box">
<input type="text" name="shipping[email]" id="shipping:email" value="" title="" class="input-text validate-email required-entry" />
</div>
</div>
 
</li>
<script type="text/javascript">
//<![CDATA[
function buscar_end_shipping() {
var url = '';
 
new Ajax.Request( url, {    method: 'post',
parameters: 'cep='+$('shipping:postcode').value,
onComplete: function(transport) {
var res = transport.responseText.evalJSON();
 
if ( res.resultado == '1' ) {
$('shipping:street1').value = res.tipo_logradouro+' '+res.logradouro;
if ($('shipping:street2')) $('shipping:street2').value = res.bairro;
$('shipping:city').value = res.cidade;
$('shipping:region').value = res.uf;
}
}
});
}
//]]>
</script>
 <li>
<div class="field">
<label for="shipping:postcode" class="required"><em>*</em></label>
<div class="input-box">
<input type="text" title="" name="shipping[postcode]" id="shipping:postcode" value="" class="input-text validate-zip-international required-entry" onchange="shipping.setSameAsBilling(false);" onblur="buscar_end_shipping();" />
</div>
</div>
 </li>
<li class="wide">
<label for="shipping:street1" class="required"><em>*</em></label>
<div class="input-box">
<input type="text" title="" name="shipping[street][]" id="shipping:street1" value="" class="input-text required-entry" onchange="shipping.setSameAsBilling(false);" />
</div>
</li>
 
<li class="wide">
<div class="input-box">
<input type="text" title="" name="shipping[street][]" id="shipping:street" value="" class="input-text" onchange="shipping.setSameAsBilling(false);" />
</div>
</li>
 
<li class="fields">
<div class="field">
<label for="shipping:city" class="required"><em>*</em></label>
<div class="input-box">
<input type="text" title="" name="shipping[city]" value="" class="input-text required-entry" id="shipping:city" onchange="shipping.setSameAsBilling(false);" />
</div>
</div>
<div class="field">
<label for="shipping:region" class="required"><em>*</em></label>
<div class="input-box">
<select id="shipping:region_id" name="shipping[region_id]" title="" class="validate-select" style="display:none;">
<option value=""></option>
</select>
<script type="text/javascript">
//<![CDATA[
$('shipping:region_id').setAttribute('defaultValue',  "");
//]]>
</script>
<input type="text" id="shipping:region" name="shipping[region]" value="" title="" class="input-text" style="display:none;" />
</div>
</div>
</li>
<li class="fields">
<div class="field">
<label for="shipping:country_id" class="required"><em>*</em></label>
<div class="input-box">
 
</div>
</div>
</li>
<li class="fields">
<div class="field">
<label for="shipping:telephone" class="required"><em>*</em></label>
<div class="input-box">
<input type="text" name="shipping[telephone]" value="" title="" class="input-text required-entry" id="shipping:telephone" onchange="shipping.setSameAsBilling(false);" />
</div>
</div>
<div class="field">
<label for="shipping:fax"></label>
<div class="input-box">
<input type="text" name="shipping[fax]" value="" title="" class="input-text" id="shipping:fax" onchange="shipping.setSameAsBilling(false);" />
</div>
</div>
</li>
 
<li class="control">
<input type="checkbox" name="shipping[save_in_address_book]" value="1" title="" id="shipping:save_in_address_book" onchange="shipping.setSameAsBilling(false);" checked="checked" class="checkbox" /><label for="shipping:save_in_address_book">
 
<li class="no-display"><input type="hidden" name="shipping[save_in_address_book]" value="1" /></li>
 
</ul>
</fieldset>
</li>
<li class="control">
<input type="checkbox" name="shipping[same_as_billing]" id="shipping:same_as_billing" value="1" checked="checked" title="" onclick="shipping.setSameAsBilling(this.checked)" class="checkbox" /><label for="shipping:same_as_billing"></label>
</li>
</ul>
<div class="buttons-set" id="shipping-buttons-container">
<p class="required"></p>
<p class="back-link"><a href="#" onclick="checkout.back(); return false;"><small>&laquo; </small></a></p>
<button type="button" class="button" title="" onclick="shipping.save()"><span><span></span></span></button>
<span id="shipping-please-wait" class="please-wait" style="display:none;">
<img src="/" alt="" title="" class="v-middle" />
</span>
</div>
</form>
<script type="text/javascript">
//<![CDATA[
var shipping = new Shipping('co-shipping-form', 'address/', '',
'');
var shippingForm = new VarienForm('co-shipping-form');
shippingForm.extraChildParams = ' onchange="shipping.setSameAsBilling(false);"';
//shippingForm.setElementsRelation('shipping:country_id', 'shipping:region', '', '');
$('shipping-address-select') && shipping.newAddress(!$('shipping-address-select').value);
 
var shippingRegionUpdater = new RegionUpdater('shipping:country_id', 'shipping:region', 'shipping:region_id', countryRegions, undefined, 'shipping:postcode');
//]]>
</script>

 

 

 

<?php
/**
* Magento
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE_AFL.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to 
  Este endereço de e-mail está protegido contra spambots. Você deve habilitar o JavaScript para visualizá-lo.
  so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade Magento to newer
* versions in the future. If you wish to customize Magento for your
* needs please refer to http://www.magentocommerce.com for more information.
*
* @category    design
* @package     base_default
* @copyright   Copyright (c) 2009 Irubin Consulting Inc. DBA Varien (http://www.varien.com)
* @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
*/
?>
<form id="co-billing-form" action="">
<fieldset>
<ul>
<?php if ($this->customerHasAddresses()): ?>
<li>
<label for="billing-address-select"><?php echo $this->__('Select a billing address from your address book or enter a new address.') ?></label>
<div>
<?php echo $this->getAddressesHtmlSelect('billing') ?>
</div>
</li>
<?php endif; ?>
<li id="billing-new-address-form" style="display:none;"<?php endif; ?>>
<fieldset>
<input type="hidden" name="billing[address_id]" value="" id="billing:address_id" />
<ul>
<li><?php echo $this->getLayout()->createBlock('customer/widget_name')->setObject($this->getAddress())->setFieldIdFormat('billing:%s')->setFieldNameFormat('billing[%s]')->toHtml() ?></li>
<li>
<div>
<label for="billing:company"><?php echo $this->__('Company') ?></label>
<div>
<input type="text" id="billing:company" name="billing[company]" value="" title="" />
</div>
</div>
<?php if(!$this->isCustomerLoggedIn()): ?>
<div>
<label for="billing:email"><em>*</em><?php echo $this->__('Email Address') ?></label>
<div>
<input type="text" name="billing[email]" id="billing:email" value="" title="" />
</div>
</div>
<?php endif ?>
</li>
<script type="text/javascript">
//<![CDATA[
function buscar_end_billing() {
var url = '<?php echo $this->getUrl('republicavirtual/ajax/endereco') ?>';

new Ajax.Request( url, {    method: 'post',
parameters: 'cep='+$('billing:postcode').value,
onComplete: function(transport) {
var res = transport.responseText.evalJSON();

if ( res.resultado == '1' ) {
$('billing:street1').value = res.tipo_logradouro+' '+res.logradouro;
if ($('billing:street2')) $('billing:street2').value = res.bairro;
$('billing:city').value = res.cidade;
$('billing:region').value = res.uf;
}
}
});
}
//]]>
</script>
 <li>
<div>
<label for="billing:postcode"><em>*</em><?php echo $this->__('Zip/Postal Code') ?></label>
<div>
<input type="text" title="" name="billing[postcode]" id="billing:postcode" value="" onblur="buscar_end_billing();" />
</div>
</div>
 </li>
<li>
<label for="billing:street1"><em>*</em><?php echo $this->__('Address') ?></label>
<div>
<input type="text" title="" name="billing[street][]" id="billing:street1" value="" />
</div>
</li>
<?php for ($_i=2, $_n=$this->helper('customer/address')->getStreetLines(); $_i<=$_n; $_i++): ?>
<li>
<div>
<input type="text" title="" name="billing[street][]" id="billing:street" value="" />
</div>
</li>
<?php endfor ?>
<li>
<div>
<label for="billing:city"><em>*</em><?php echo $this->__('City') ?></label>
<div>
<input type="text" title="" name="billing[city]" value="" id="billing:city" />
</div>
</div>
<div>
<label for="billing:region_id"><em>*</em><?php echo $this->__('State/Province') ?></label>
<div>
<select id="billing:region_id" name="billing[region_id]" title="" style="display:none;">
<option value=""><?php echo $this->__('Please select region, state or province') ?></option>
</select>
<script type="text/javascript">
//<![CDATA[
$('billing:region_id').setAttribute('defaultValue',  "");
//]]>
</script>
<input type="text" id="billing:region" name="billing[region]" value=""  title="" style="display:none;" />
</div>
</div>
</li>
<li>
<div>
<label for="billing:country_id"><em>*</em><?php echo $this->__('Country') ?></label>
<div>
<?php echo $this->getCountryHtmlSelect('billing') ?>
</div>
</div>
</li>
<li lang="fields">
<div>
<label for="billing:telephone"><em>*</em><?php echo $this->__('Telephone') ?></label>
<div>
<input type="text" name="billing[telephone]" value="" title="" id="billing:telephone" />
</div>
</div>
<div>
<label for="billing:fax"><?php echo $this->__('Fax') ?></label>
<div>
<input type="text" name="billing[fax]" value="" title="" id="billing:fax" />
</div>
</div>
</li>
<?php if(!$this->isCustomerLoggedIn()): ?>

<?php $_dob = $this->getLayout()->createBlock('customer/widget_dob') ?>
<?php $_gender = $this->getLayout()->createBlock('customer/widget_gender') ?>
<?php if ($_dob->isEnabled() || $_gender->isEnabled()): ?>
<li>
<?php if ($_dob->isEnabled()): ?>
<div>
<?php echo $_dob->setDate($this->getQuote()->getCustomerDob())->setFieldIdFormat('billing:%s')->setFieldNameFormat('billing[%s]')->toHtml() ?>
</div>
<?php endif; ?>
<?php if ($_gender->isEnabled()): ?>
<div>
<?php echo $_gender->setGender($this->getQuote()->getCustomerGender())->setFieldIdFormat('billing:%s')->setFieldNameFormat('billing[%s]')->toHtml() ?>
</div>
<?php endif ?>
</li>
<?php endif ?>

<?php $_taxvat = $this->getLayout()->createBlock('customer/widget_taxvat') ?>
<?php if ($_taxvat->isEnabled()): ?>
<li>
<?php echo $_taxvat->setTaxvat($this->getQuote()->getCustomerTaxvat())->setFieldIdFormat('billing:%s')->setFieldNameFormat('billing[%s]')->toHtml() ?>
</li>
<?php endif ?>

<li id="register-customer-password">
<div>
<label for="billing:customer_password"><em>*</em><?php echo $this->__('Password') ?></label>
<div>
<input type="password" name="billing[customer_password]" id="billing:customer_password" title="" />
</div>
</div>
<div>
<label for="billing:confirm_password"><em>*</em><?php echo $this->__('Confirm Password') ?></label>
<div>
<input type="password" name="billing[confirm_password]" title="" id="billing:confirm_password" />
</div>
</div>
</li>
<?php endif; ?>
<?php if ($this->isCustomerLoggedIn() && $this->customerHasAddresses()):?>
<li>
<input type="checkbox" name="billing[save_in_address_book]" value="1" title="" id="billing:save_in_address_book" onchange="shipping.setSameAsBilling(false);" checked="checked" /><label for="billing:save_in_address_book"><?php echo $this->__('Save in address book') ?></label>
</li>
<?php else:?>
<li><input type="hidden" name="billing[save_in_address_book]" value="1" /></li>
<?php endif; ?>
</ul>
</fieldset>
</li>
<?php if ($this->canShip()): ?>
<li>
<input type="radio" name="billing[use_for_shipping]" id="billing:use_for_shipping_yes" value="1" checked="checked" title="" onclick="$('shipping:same_as_billing').checked = true;" /><label for="billing:use_for_shipping_yes"><?php echo  $this->__('Ship to this address') ?></label></li>
<li>
<input type="radio" name="billing[use_for_shipping]" id="billing:use_for_shipping_no" value="0" checked="checked" title="" onclick="$('shipping:same_as_billing').checked = false;" /><label for="billing:use_for_shipping_no"><?php echo $this->__('Ship to different address') ?></label>
</li>
<?php endif; ?>
</ul>
<?php if (!$this->canShip()): ?>
<input type="hidden" name="billing[use_for_shipping]" value="1" />
<?php endif; ?>
<div id="billing-buttons-container">
<p><?php echo $this->__('* Required Fields') ?></p>
<button type="button" title="" onclick="billing.save()"><span><span><?php echo $this->__('Continue') ?></span></span></button>
<span id="billing-please-wait" style="display:none;">
<img src="/" alt="" title="" /> <?php echo $this->__('Loading next step...') ?>
</span>
</div>
</fieldset>
</form>
<script type="text/javascript">
//<![CDATA[
var billing = new Billing('co-billing-form', '<?php echo $this->getUrl('checkout/onepage/getAddress') ?>address/', '<?php echo $this->getUrl('checkout/onepage/saveBilling') ?>');
var billingForm = new VarienForm('co-billing-form');

//billingForm.setElementsRelation('billing:country_id', 'billing:region', '<?php echo $this->getUrl('directory/json/childRegion') ?>', '<?php echo $this->__('Select State/Province...') ?>');
$('billing-address-select') && billing.newAddress(!$('billing-address-select').value);

var billingRegionUpdater = new RegionUpdater('billing:country_id', 'billing:region', 'billing:region_id', countryRegions, undefined, 'billing:postcode');
//]]>
</script>

 

 

Qualquer dúvida, postem no fórum: http://comunidademagento.com.br/forum-magento-brasil/28-programacao--php--zend-framework/460-auto-completar-endereco-com-ajax#460

Sucesso.

 

 

Última atualização ( Sex, 02 de Abril de 2010 22:36 )  

Comentários  

 
-6 # Roger.Valentin 2010-12-17 19:14
Com os lucros, como que eu era capaz de parar os meus dois empregos a tempo parcial, e comprar um carro novo doce! Eu poderia ter abandonado a faculdade com o dinheiro que eu estava fazendo, mas eu não queria que eu realmente gosto de fazer meus estudos. Mas queria dizer que eu poderia chegar até a data em todos os meus livros, comprar um novo laptop, e pagar todas as custas dos cursos de antecedência, para o meu grau completo.


A última coisa que eu queria era para engordar os bolsos dos que já são ricos gatos gordos! É hora de compartilhar a riqueza ao redor. E desde Forex sinal Shop simplesmente funciona, com provas indiscutível e poder, é exatamente a ferramenta para o trabalho.

Sim, eu querem explorar a Loja do sinal de Forex: forexsignalshop.com para lucros enormes!
Reply | Responder com citação | Citar
 

Adicionar comentário


Código de segurança
Refresh