Проверка Magento - получение значения пользовательского атрибута
Я работаю в OnepageController.php
Что мне было нужно в процессе оформления заказа, так это получить значения некоторых атрибутов, созданных клиентом для продуктов в текущем заказе. Мне удалось отобразить системный атрибут "артикул", но я не могу отобразить значения пользовательских атрибутов.
Мой код до сих пор таков:
$helper = Mage::helper('checkout/cart');
$items = $helper->getCart()->getItems();
foreach ($items as $item) {
$itemSku = $item->getSku();
echo $itemSku."<br/>";
}
Я запустил это в Firefox с помощью Firebug, и он отображает значение артикула. Однако что мне нужно, так это ценность обычая атрибут, созданный в бэкэнде. Я попытался заменить:
$itemSku = $item->getSku();
Кому:
$itemEan = $item->getAttributeText('ean');
Где 'ean' - идентификатор атрибута. Этот атрибут представляет собой текстовое поле. Когда проверка выполняется снова, ошибок нет, но отображаются примечания (кроме html-тега строки разрыва).
У меня также есть еще один пользовательский атрибут, который является атрибутом "множественного выбора". Как мы получаем значение атрибута для этого изменения?
Любая помощь, отображающая это, очень важна оцененный.
ОБНОВЛЕНИЕ
Я не могу написать ответ из-за отсутствия репутации, но я нашел решение, которое работает для меня, если это кому-то поможет. Приведенный ниже код сработал для меня:
$cartItems = Mage::getSingleton('checkout/session')->getQuote()-getAllItems();
foreach ($cartItems as $item) {
$ean = Mage::getModel('catalog/product')->load($item->getProduct()->getId())->getEan();
echo $ean;
}
Где 'Getean()' - это имя моего пользовательского атрибута, начинающееся с заглавной буквы.
Спасибо всем за их вклад.
5 answers
После некоторых исследований мне удалось найти некоторый код, который помог, который приведен ниже:
$cartItems = Mage::getSingleton('checkout/session')
->getQuote()
->getAllItems();
foreach ($cartItems as $item) {
$ean = Mage::getModel('catalog/product')->load($item->getProduct()->getId())->getEan();
echo $ean;
}
Где getEan - это имя моего атрибута с первым символом в виде заглавной буквы.
Спасибо всем вам за предложения.
Добавьте это в свой модуль config.xml :
<global>
<sales>
<quote>
<item>
<product_attributes>
<attribute1 />
</product_attributes>
</item>
</quote>
</sales>
</global>
Вы сможете получить доступ к атрибуту через:
$_item->getProduct()->getData("custom_attribute");
Если вы находитесь на странице продукта, то для выпадающего атрибута просто добавьте
echo $_product->getAttributeText('attribute_code');
Для текстового атрибута добавьте
echo $_product->getData('attribute_code');
Если вы не находитесь на странице продукта, то сначала вам необходимо загрузить продукт по идентификатору продукта.
$_product = Mage::getModel('catalog/product')->load($id);
getAttributeText
предназначен для выпадающих полей. Для текстовых полей используйте магические геттеры:
$item->getEan();
Или
$item->getData('ean');
Для вашего множественного выбора getData
должен возвращать массив, который вам затем нужно будет обработать, иначе вы можете его взорвать. Если вы находитесь в контексте, где вы не знаете, какой тип возвращается (хотя я не уверен, как это вообще возможно), вы можете проверить это с помощью следующего:
Получить объект атрибута – если у вас есть только атрибут код
$attribute = Mage::getSingleton('eav/config')->getAttribute('catalog_product', $_attribute_code);
Получение значений Множественного Выбора
if($attribute->getFrontendInput() == 'multiselect') {
$multiSelectArray = $_product->getAttributeText($_attribute);
#var_dump($multiSelectArray);
echo implode(', ',$multiSelectArray);
}
В представлении продукта, а также на странице оформления заказа и на странице корзины в версии сообщества Magento 1.7.0.2. Мне удалось отобразить свой пользовательский атрибут, выполнив следующее:
$custom_attribute = $_product->getData('custom_attribute');
Надеюсь, это поможет!