Проверка 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()' - это имя моего пользовательского атрибута, начинающееся с заглавной буквы.

Спасибо всем за их вклад.

Author: user1669256, 2013-06-24

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 - это имя моего атрибута с первым символом в виде заглавной буквы.

Спасибо всем вам за предложения.

 12
Author: user1669256, 2014-03-06 03:17:20

Добавьте это в свой модуль config.xml :

<global>
    <sales>
        <quote>
            <item>
                <product_attributes>
                    <attribute1 />
                </product_attributes>
            </item>
        </quote>
    </sales>
</global>

Вы сможете получить доступ к атрибуту через:

$_item->getProduct()->getData("custom_attribute");
 7
Author: srgb, 2015-07-13 17:39:42

Если вы находитесь на странице продукта, то для выпадающего атрибута просто добавьте

echo $_product->getAttributeText('attribute_code');

Для текстового атрибута добавьте

echo  $_product->getData('attribute_code');

Если вы не находитесь на странице продукта, то сначала вам необходимо загрузить продукт по идентификатору продукта.

$_product = Mage::getModel('catalog/product')->load($id); 
 4
Author: user2753425, 2014-01-17 12:39:01

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);
}

Источник: http://www.magentodeveloperleedsuk.co.uk/get-drop-down-list-and-multi-select-values-for-magento-product-attributes/

 2
Author: philwinkle, 2013-06-24 13:52:29

В представлении продукта, а также на странице оформления заказа и на странице корзины в версии сообщества Magento 1.7.0.2. Мне удалось отобразить свой пользовательский атрибут, выполнив следующее:

$custom_attribute = $_product->getData('custom_attribute');

Надеюсь, это поможет!

 1
Author: Mohamed Elgharabawy, 2014-08-29 08:30:25