【问题标题】:How to save my custom field value while creating a customer programmatically in magento?如何在magento中以编程方式创建客户时保存我的自定义字段值?
【发布时间】:2015-09-14 15:09:57
【问题描述】:

我正在尝试创建一个脚本,用于在 magento 中以编程方式创建客户。我可以使用 magento 自己的方法存储我的所有字段。但是我有一个名为“landmark”的自定义字段,我需要将其保存到客户的帐户中。我该怎么做?我是 Magento 的新手。需要帮助。

目前存储所有其他字段的代码如下所示
$address = Mage::getModel("customer/address"); $address->setCustomerId($customer->getId()) ->setFirstname($customer->getFirstname()) ->setMiddleName($customer->getMiddlename()) ->setLastname($customer->getLastname()) ->setCountryId('IN') ->setRegion($state) ->setPostcode($pincode) ->setCity($city) ->setTelephone($mobile) ->setStreet($addressArray) ->setIsDefaultBilling('1') ->setIsDefaultShipping('1') ->setSaveInAddressBook('1');

如何将自定义字段“地标”的值存储到地址对象?

【问题讨论】:

    标签: php magento zend-framework


    【解决方案1】:

    您可以在更新其他本机字段时更新您的自定义字段,如下所示:

    $address->setLandMark("Your Land Mark Data Here");
    

    同样的方法,你可以从地址模型中获取地标数据,如下所示:

    $address->getLandMark();
    

    但是请注意,每当您对数据库表结构进行任何更改时,您都必须清除 magento 缓存,并且最好从管理员中清除 magento 缓存存储或删除文件夹 mageRoot/var/cache 的所有内容,因为 magento 保留缓存它的数据库结构也是如此。

    【讨论】:

    • 那行得通。但我仍然不明白 magento 是如何设法使用setLandmark() 而不在任何地方定义它@altafhussain
    • setLandMark 是地标的设置方法,getLandMark 是地标的获取器。现在在模型中它没有被定义,但是 magento 有一个名为 Varien_Object 的类,它有一个方法 __call。当对象的被调用方法不可用时调用该方法。请在此处阅读更多信息codegento.com/2011/02/where-are-my-getters-and-setters。如果我的回答解决了您的问题,请接受它作为答案并给它一个积极的投票;)
    【解决方案2】:

    您可以将自定义属性视为与任何默认 magento 属性相同。只需从客户模型中获取值并在客户地址模型中设置值。

    $address->setLandmark($customer->getLandmark());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-05
      • 1970-01-01
      • 2016-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多