Я добавил новый пользовательский атрибут для клиента, используя приведенный ниже код.Как обновить пользовательский атрибут Magento Client программно?
$installer = $this;
$installer->startSetup();
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$entityTypeId = $setup->getEntityTypeId('customer');
$attributeSetId = $setup->getDefaultAttributeSetId($entityTypeId);
$attributeGroupId = $setup->getDefaultAttributeGroupId($entityTypeId, $attributeSetId);
$installer->addAttribute("customer", "stripe_customer_id", array(
"type" => "varchar",
"backend" => "",
"label" => "Stripe ID",
"input" => "text",
"source" => "",
"visible" => true,
"required" => false,
"default" => "",
"frontend" => "",
"unique" => false,
));
$attribute = Mage::getSingleton("eav/config")->getAttribute("customer", "stripe_customer_id");
$setup->addAttributeToGroup(
$entityTypeId, $attributeSetId, $attributeGroupId, 'stripe_customer_id', '999' //sort_order
);
$used_in_forms = array();
$used_in_forms[] = "adminhtml_customer";
$attribute->setData("used_in_forms", $used_in_forms)
->setData("is_used_for_customer_segment", true)
->setData("is_system", 0)
->setData("is_user_defined", 1)
->setData("is_visible", 1)
->setData("sort_order", 100)
;
$attribute->save();
$installer->endSetup();
Я вижу новое поле атрибута в Magento admin.
Теперь, когда я пытаюсь обновить пользовательский атрибут проверки с помощью кода ниже
$order = $payment->getOrder();
$customer = Mage::getModel('customer/customer')->load($order->getCustomerId());
$customer->setWebsiteId(Mage::app()->getWebsite()->getId());
$customer->setStripeCustomerId('887475748');
try {
$customer->save();
print('Saved: '.$customer->getStripeCustomerId());
} catch (Exception $ex) {
Mage::throwException($ex->getMessage());
}
Над кодом гравюр «Сохраненные: 887475748» и никогда не выбрасывает никаких исключений. Это означает, что клиент сохраняет без ошибок, но когда я вижу информацию на панели администратора, в поле ничего нет.
Примечание. Я обновил кеш Magento несколько раз, сбросил кеш-память и сбросил кеш Magento, но не успел.
Может кто-нибудь, пожалуйста, помогите мне, если мне что-то не хватает?
Попробуйте удалить каталог 'var/cache'. Иногда DDE-кеш Magento остается позади, и когда Magento сохраняет модель, он не «знает» о новом атрибуте. Кроме того, перед сохранением убедитесь, что ваш клиент является действительным клиентом (после загрузки его можно проверить «$ customer-> getId()»). – Agop