Как отфильтровать коллекцию по атрибуту типа YesNo? - PullRequest
1 голос
/ 11 ноября 2009

У меня есть атрибут «признак», который имеет выбор выбора Да / Нет в качестве входа администратора. Я предполагаю, что значения Да и Нет равны 1 и 0, как и для любого другого списка Да / Нет. Однако, если я попытаюсь отфильтровать коллекцию с помощью атрибута «Featured», она не будет работать:

$feat_attribute = $_product->getResource()->getAttribute($featuredattribute)->getSource()->getOptionId(1);

Но если я сделаю атрибут «признакам» с выпадающим списком и напишу свои собственные «Да» и «Нет», то он будет работать следующим образом:

$feat_attribute = $_product->getResource()->getAttribute($featuredattribute)->getSource()->getOptionId('Yes');

У кого-нибудь есть идеи? Я также пробовал значения как true / false, да / нет, вкл / выкл и т. Д., Но не радости.

Ответы [ 3 ]

2 голосов
/ 08 мая 2012

Это похоже на старую ветку, но в любом случае у меня возникла та же проблема, я установил атрибут, который будет отображаться в списке товаров и представлении товара, а затем применил addAttributeToFilter(feature_product_attribute, 1) для типа Да / Нет.

0 голосов
/ 11 ноября 2009

Всякий раз, когда поведение Magento вводит меня в заблуждение, я начинаю взламывать основной источник (конечно, копию для разработки), чтобы посмотреть, что он делает и почему не делает то, что, как я думаю, должно. Я не слишком много играл с интерфейсом Admin, поэтому я не на 100% понимаю ваш вопрос, но взгляну на функцию getOption

File: /app/code/core/Mage/Eav/Model/Entity/Attribute/Source/Abstract.php

public function getOptionId($value)
{
    foreach ($this->getAllOptions() as $option) {
        if (strcasecmp($option['label'], $value)==0 || $option['value'] == $value) {
            return $option['value'];
        }
    }
    return null;
}

Я бы добавил туда несколько вызовов Mage::Log и / или var_dump для значений $option['label'] и $option['value'] и посмотрел бы, почему сравнение не удается.

0 голосов
/ 11 ноября 2009

Может быть, вы должны использовать '1' и '0' вместо целочисленных значений?

Как:

$feat_attribute = $_product->getResource()->getAttribute($featuredattribute)->getSource()->getOptionId('1');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...