사용자 정의 고객 그리드의 ID 대신 속성 텍스트 가져 오기
-
12-12-2019 - |
문제
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');
. 제휴하지 않습니다 magento.stackexchange