zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    sky A800s手机恢复出厂设置操作
    SlimDx绘制点图元的问题
    自定义Token的CAS登录
    未来谁才是移动互联网的入口?
    [Oracle]Sqlplus连接成功,但pl/sql连接不成功,提示“ora-12145:无法解析指定的连接标识符”
    memcached分布式内存系统
    Android下结束进程的方法
    博客搬家啦~
    NOIp2013火柴排队
    NOIp2014 T2联合权值
  • 原文地址:https://www.cnblogs.com/xiaoSoldier/p/2586998.html
Copyright © 2011-2022 走看看