magento购买界面常用地址修改功能不好用
继续magento的开发,今天貌似又发现一个magento的小bug,就是在用户购买界面,出现页面一直在加载,
不能继续正常的购买流程,查看了一下网页的源代码,原来是购买界面在获取用户的常用收获地址时出错,
如图:
两个常用地址的值获取不到,于是定位到源代码看看,在..\app\design\frontend\base\default\template\checkout\onepage\shipping.phtml文件里发现了代码:
<?php if ($this->customerHasAddresses()): ?> <!-- 如果有地址则显示这些地址-->
<div id="address-list" class="clearfix">
<div class="stock_address"><strong><?php echo $this->__('Commonly used address');?></strong>
<ul>
<?php $index = 0; foreach ($this->getCustomer()->getAddresses() as $address):?> <!-- foreach 每个地址-->
<?php if ($address->getCountryId() != $this->getCountryId() && !$this->getCountryMore()) {continue; } ?>
<li <?php if($address->getId()==$this->getCustomer()->getDefaultShipping()):?>class="default"<?php endif;?>>
<?php if ($this->getCountryMore()){echo $address->getCountryModel()->getName() . '-';} echo $address->getRegion(), $address->getCity(), $address->getArea(), $address->getStreetFull(); ?>
<script type="text/javascript">
var address<?php echo $index ++;?> = <?php echo json_encode(array(
'customer_address_id'=> $address->getId(),
'name' => $address->getName(),
'country_id'=> $address->getCountryId(),
'region_id' => $address->getRegionId(),
'region' => $address->getRegion(),
'city_id' => $address->getCityId(),
'city' => $address->getCity(),
'area_id' => $address->getAreaId(),
'area' => $address->getArea(),
'street' => $address->getStreet(),
'postcode' => $address->getPostcode(),
'telephone' => $address->getTelephone(),
'fax' => $address->getFax(),
'email' => $address->getEmail()
),false); ?>;
</script>
</li>
<?php endforeach; ?>
</ul>
</div>
</div>
<?php endif; ?>
代码中红色部分正是前台页面代码中获取不到数据的部分。
其大意就是使用javascript代码,对每个常用地址都使用一个javascript变量来存储,以便在修改地址时实现地址内容输入框的自动替换,但现在的问题是这个var出来的变量获取不到数据,不能被赋予值。
解决办法:
修改这段javascript代码,将<?php echo json_encode(array(...),false); ?>代码修改为<?php echo json_encode(array(...)); ?>,也就是去掉json_encode方法的第二个false参数,我也不知道开发人员为什么会添上这第二个参数。
保存,后台刷新缓存(刷的蛋疼...一点修改就得刷缓存 - -!),再次购买,成功加载页面,点击“收货人信息”栏的“修改”,点击列出的常用地址,ok,可以正常自动更改下方的输入框内容,说明修改成功!
QQ:563084310