Мне пришлось создать аналогичное поле (в данном случае refer_by) для клиента Enterprise, так что вот как это произошло:
Сначала я создал модуль, в котором было бы все это забавно.Я добавил свою собственную запись настройки сущности для клиента, чтобы мне не пришлось полагаться на стандартную клиентскую или переписывать какие-либо модели без необходимости (со временем вы начинаете конфликтовать с самим собой при переписывании).Похоже, ваш код сущности работает, так что вы сами можете его реорганизовать.
Затем я добавил поле в наборы полей клиента, что, похоже, поможет 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>
После этого данные были правильно сохранены в базе данных.Ура!
Надеюсь, это поможет!Спасибо, Джо