如何在不修改magento核心文件的情况下在客户注册表单中创建手机号码等自定义字段?我试过但手机号码没有保存在DB
中我通过在modules文件夹中创建Model / Entity / Setup.php并使用以下代码将以下代码添加到getDefaultEntities
中来覆盖Mage_Customer_Model_Entity_Setup类和Myown_Mage_Customer_Model_Entity_Setup'mobilenumber' => array(
'label' => 'Mobile Number',
'visible' => true,
'required' => true,
),
我的配置文件也包含以下代码
<models>
<customer_entity>
<rewrite>
<customer>Myown_Mage_Customer_Model_Entity_Setup</customer>
</rewrite>
</customer_entity>
</models>
此外,我在template / customer / form / register.phtml中有此字段
<input type="text" name="mobilenumber" id="mobilenumber" value="<?php echo $this->htmlEscape($this->getFormData()->getMobilenumber()) ?>" title="<?php echo $this->__('Mobile Number') ?>" class="required-entry input-text" />
这个配置中有什么我想念的吗?我想将手机号码保存在数据库中并在之后检索它。
答案 0 :(得分:1)
我必须为Enterprise客户创建一个类似的字段(在本例中为refer_by),所以这是如何进行的:
首先,我创建了一个可以容纳所有这些乐趣的模块。我为客户添加了自己的实体设置条目,这样我就不必依赖默认客户或不必要地重写任何模型(随着时间的推移,你开始在重写时与自己发生冲突)。您的实体代码似乎有效,因此如果您想重构它,则取决于您。
然后我将该字段添加到客户字段集中,这似乎有助于Magento了解要在数据库中保存哪些数据:
<global>
<fieldsets>
<customer_account>
<referred_by>
<create>1</create>
<update>0</update>
<to_order>customer_referred_by</to_order>
</referred_by>
</customer_account>
</fieldsets>
</global>
然后我将该字段添加到客户表单中,类似于您上面的方式。在结账时,我被迫在单页结账时添加一个重写模型以在结账时保存数据(在我的情况下,仅在结算期间):
class Company_Module_Model_Checkout_Type_Onepage extends Mage_Checkout_Model_Type_Onepage {
public function saveBilling($data, $customerAddressId) {
if (isset($data['referred_by'])) {
// set referred for later use.
$session = Mage::getSingleton("customer/session");
$session->setData("referred_by", $data['referred_by']);
}
return parent::saveBilling($data, $customerAddressId);
}//end saveBilling
}
和
<global>
<models>
<checkout>
<rewrite>
<type_onepage>Company_Module_Model_Checkout_Type_Onepage</type_onepage>
</rewrite>
</checkout>
</models>
</global>
之后,数据已正确保存在数据库中。乌拉!
希望有所帮助! 谢谢, 乔
答案 1 :(得分:0)
关于您的代码:
您不必覆盖 Mage_Customer_Model_Entity_Setup 因为这个类只用于 安装客户属性。该 解决方案是拥有自己的设置 继承自的类 Mage_Customer_Model_Entity_Setup。
您还需要一个mysql4安装设置 文件
要确切了解如何向客户添加新属性,请参阅我制作的magento模块: https://code.google.com/p/magento-code-snippets/source/browse/#svn/trunk/PWS_ExtCustomerFields