Отображение атрибута клиента с несколькими вариантами в сетке администратора управления клиентами - PullRequest
5 голосов
/ 26 мая 2011

Хорошо, так с Атрибутами Клиента у меня есть выбор из нескольких вариантов, который я добавил в Сетка управления клиентами.

    $prodCode = Mage::getSingleton('eav/config')->getAttribute('customer','prod_codes');
    $prodCodeOptions = $prodCode->getSource()->getAllOptions(false);
    $prodOptions = array();

    foreach($prodCodeOptions as $k)
        $prodOptions[$k['value']] = $k['label'];

    $this->addColumn('prod_codes', array(
        'header'    =>  Mage::helper('customer')->__('Product Code'),
        'width'     =>  '100',
        'index'     =>  'prod_codes',
        'type'      =>  'options',
        'options'   =>  $prodOptions,
        'filter_condition_callback'
                    => array($this, '_filterProdOptionsCondition'),
    ));

Мой атрибут добавлен в коллекцию в верхней части моей Сетки.php:

->addAttributeToSelect('prod_codes')

Вот мой _filterProdOptionsCondition метод:

protected function _filterProdOptionsCondition($collection, $column) {
    if(!$value = $column->getFilter()->getValue()) {
        return;
    }
    $this->getCollection()->addFieldToFilter('prod_codes', array('finset' => $value));
    #print($collection->getSelectSql());
}

Теперь это работает отлично и денди, если у меня только ONE из выбранных опций, как только я применю более одного параметра к атрибуту клиентов, я получу пустые результаты в сетке администратора, однако он все еще доступен для поиска.

При ближайшем рассмотрении без комментария print($collection->getSelectSql()); я вижу, что значения идентификатора атрибута возвращаются в списке через запятую.

Теперь на мой вопрос с выложенным фоном, есть лиметод или "Magento" способ отображения этих мульти-опций в сетке администратора, о которых я просто не знаю?Или мне просто нужно разобрать значения запятой и вызвать новую коллекцию для построения отображаемых значений?Любая помощь приветствуется!

1 Ответ

5 голосов
/ 28 мая 2011

Похоже, мне пришлось расширить средство визуализации столбцов, чтобы предвосхищать значения запятых и просто отображать их. Я удивлен, что это не встроено, поскольку существует функциональность для создания атрибутов multioptions, но нет опции отображения сетки для этого.

Приложение / код / ​​местные / Mage / Adminhtml / Block / Widget / Сетка / колонки / Renderer / Options.php

public function render(Varien_Object $row)
{
    $options = $this->getColumn()->getOptions();
    $showMissingOptionValues = (bool)$this->getColumn()->getShowMissingOptionValues();
    if (!empty($options) && is_array($options)) {
        $value = $row->getData($this->getColumn()->getIndex());
        if (is_array($value)) {
            $res = array();
            foreach ($value as $item) {
                if (isset($options[$item])) {
                    $res[] = $options[$item];
                }
                elseif ($showMissingOptionValues) {
                    $res[] = $item;
                }
            }
            return implode(', ', $res);
        }
        elseif (isset($options[$value])) {
            return $options[$value];
        } elseif (is_string($value)) { // <--- MY CHANGES HERE
            $values = explode(',', $value);
            $returnOptions = "";
            foreach($values as $k=>$v) {
                $returnOptions .= $options[$v]. ", ";
            }
            return substr($returnOptions, 0, -2);
        }
        return '';
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...