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

posted @ 2012-07-11 21:39  xiaoSoldier  阅读(611)  评论(0编辑  收藏  举报