当结账时,Magento会自动通过网址或会话填写账单地址表

时间:2013-02-28 00:48:35

标签: php magento zend-form

情况:以访客身份结帐(数据库中没有客户帐单邮寄地址)。

问题:如何使用来自网址或会话的变量自动填写帐单邮寄地址表单?

对我来说完美的解决方案是:

  1. 尽可能少地改变,例如在这个文件

      

    应用程序/设计/前端/默认/ my_theme_name /模板/持久性/结帐/ onepage / billing.phtml

  2. 以这种方式访问​​变量

      

    $这 - >的getAddress() - >的getName();

  3. 我的临时解决方案:

    /* array comes from url or session */
    
    $myAddress = array (
        'firstname' => 'John',
        'lastname' => 'Smith',
        'street' => array (
            '0' => '1st Street',
            '1' => '2056',
        ),
        'city' => 'Maspeth',
        'region_id' => '',
        'region' => '',
        'postcode' => 'NY11378',
        'country_id' => 'US',
        'telephone' => '0017183209872'
        );
    
    $customAddress = Mage::getModel('customer/address');
    $customAddress->setData($myAddress);
    
    /* $this = Mage_Checkout_Block_Onepage_Billing */
    
    $this
        ->setBillingAddress(Mage::getSingleton('sales/quote_address')
        ->importCustomerAddress($customAddress));
    
    /* insert value into input field */
    
    echo $this->getBillingAddress()->getName();
    

1 个答案:

答案 0 :(得分:1)

$this
->setBillingAddress(Mage::getSingleton('sales/quote_address')
->importCustomerAddress($customAddress));

这里不要使用"$this"它必须是一个Quote对象(Mage_Sales_Model_Quote)而不是一个Billing Block(Mage_Checkout_Block_Onepage_Billing)。使用$this->getQuote()