문제

AdminHTML 고객 그리드에서 고객의 사용자 정의 특성을 표시하고 싶습니다. 새 모듈을 만들고 setCollection Mage_Adminhtml_Block_Customer_Grid 메소드를 확장 하여이 작업을 수행했습니다.

public function setCollection($collection)
    {
        $collection->addAttributeToSelect('x_customer_category');
        parent::setCollection($collection);
    }
.

와 나는 관찰자를 통해 열을 뷰에 추가

/**
     * Adds column to admin customers grid
     *
     * @param Varien_Event_Observer $observer
     *
     * @return Mscg_TemplateOverwrite_Model_Customer_Observer
     */
    public function addCustomerGroupToGrid(Varien_Event_Observer $observer)
    {
        $block = $observer->getBlock();
        if (!isset($block)) {
            return $this;
        }

        if ($block->getType() == 'adminhtml/customer_grid') {
            /* @var $block Mage_Adminhtml_Block_Customer_Grid */
            $block->addColumnAfter('x_customer_category', array(
                'header' => 'x_customer_category',
                'type'   => 'text',
                'index'  => 'x_customer_category',
            ), 'email');
        }
    }
.

그러나 옵션 - wise 속성이므로 고객에 대해 선택한 값의 ID 만 얻지 만 TextValue는 주어진 속성의 엔티티 값이 아닌 텍스트 값을 원합니다.

어떻게 할 수 있습니까?

여기에 이미지 설명

도움이 되었습니까?

해결책

text에서 options에서 options로 변경 하고이 형식의 값이 들어있는 key => value 요소를 추가해야합니다.
이와 같은 것 :

$block->addColumnAfter('x_customer_category', array(
            'header' => 'x_customer_category',
            'type'   => 'options',
            'index'  => 'x_customer_category',
            'options' => array(
                    'id1' => 'label 1',
                    'id2' => 'label 2',
                ),
        ), 'email');
.

가능한 값이 동적 인 경우 먼저 모든 값이있는 배열을 빌드해야합니다.가능한 모든 값을 검색하고 options 요소에 가져 오는 배열을 할당하는 방법을 알아야합니다.
속성이 표준 선택 속성 인 경우 다음과 같이 빌드 할 수 있습니다.

$attribute = Mage::getModel('eav/config')->getAttribute('customer', 'x_customer_category');
$options = $attribute->getSource()->getAllOptions(false);
$values = array();
foreach ($options as $option){
    $values[$option['value']] = $option['label'];
}
.

다음과 같은 열을 추가하십시오 :

 $block->addColumnAfter('x_customer_category', array(
            'header' => 'x_customer_category',
            'type'   => 'options',
            'index'  => 'x_customer_category',
            'options' => $values,
        ), 'email');
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 magento.stackexchange
scroll top