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

  • 相关阅读:
    8.4 IP地址的划分及子网划分
    8.3 TCPIP协议族
    微软官方宣布:Edge 浏览器将采用 Chromium 内核
    微软官方宣布:Edge 浏览器将采用 Chromium 内核
    微软官方宣布:Edge 浏览器将采用 Chromium 内核
    Web 安全开发规范手册 V1.0
    Web 安全开发规范手册 V1.0
    Web 安全开发规范手册 V1.0
    NET Core入门笔记
    NET Core入门笔记
  • 原文地址:https://www.cnblogs.com/xiaoSoldier/p/2586998.html
Copyright © 2011-2022 走看看