احصل على نص السمة بدلاً من المعرف في شبكة العملاء المخصصة

magento.stackexchange https://magento.stackexchange.com//questions/41985

سؤال

أريد إظهار سمة مخصصة للعميل في شبكة عملاء 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');
        }
    }

ومع ذلك، نظرًا لأن هذه سمة اختيارية، فإنني أحصل فقط على معرف القيمة المحددة للعميل ولكني أريد القيمة النصية، وليس قيمة الكيان للسمة المحددة.

كيف أقوم بذلك؟

enter image description here

هل كانت مفيدة؟

المحلول

تحتاج إلى تغيير نوع العمود الخاص بك من 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