gpt4 book ai didi

magento - 在客户管理管理网格中显示多选项客户属性

转载 作者:行者123 更新时间:2023-12-02 10:52:31 26 4
gpt4 key购买 nike

好的,通过客户属性,我有一个多选项选择,已将其添加到管理客户网格中。

    $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'),
));

我确实已将属性添加到 Grid.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());
}

现在,如果我只选择一个选项,那么这工作得很好,一旦我将多个选项应用于客户属性,我将在管理网格中得到空白结果,但是它仍然可以搜索。

仔细观察 print($collection->getSelectSql()); 未注释的情况,我发现属性 ID 值以逗号分隔列表的形式返回。

现在我的问题已经摆好了,有没有一种方法或“Magento”方式可以在我不知道的管理网格中显示这些多选项?或者我是否需要简单地分解逗号值并调用新的集合来构建显示值?任何帮助表示赞赏!

最佳答案

看来我必须扩展列渲染器来预测逗号值并简单地渲染它们,我很惊讶这不是内置的,因为存在创建多选项属性的功能,但没有网格显示选项。

app/code/local/Mage/Adminhtml/Block/Widget/Grid/Column/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 '';
}
}

关于magento - 在客户管理管理网格中显示多选项客户属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6131380/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com