Как отобразить атрибуты клиента в выпадающем списке с помощью пользовательского модуля - PullRequest
0 голосов
/ 08 декабря 2011

Я создал пользовательскую вкладку в админке, которая мне нужна для управления атрибутами клиентов.

Я хотел бы загрузить все атрибуты клиентов в этом разделе и установить флажки для каждого атрибута.

Так, что когда флажок установлен или снят, в зависимости от выбора столбцы будут отображаться / скрываться в Управлении клиентской сеткой.

Я хотел бы знать, как я могу отобразить все атрибуты клиентов в этом разделе с флажком каждый?

Ответы [ 2 ]

2 голосов
/ 09 декабря 2011

Вы можете использовать getAttributes(), который возвращает массив Mage_Eav_Model_Entity_Attribute.

<?php
$attributes = Mage::getModel('customer/customer')->getAttributes();
foreach ($attributes as $attr) :
?>
    <input type="checkbox" name="attributes[]" value="<?php echo $attr->getId() ?>" id="attribute-<?php echo $attr->getId() ?>" />
    <label for="attribute-<?php echo $attr->getId() ?>"><?php echo $attr->getStoreLabel() ?></label>
<?php endforeach; ?>

Значительно улучшенная техника для конфигурации:

Сначала нам нужно создать исходную модель в вашем модуле, далее вам, очевидно, придется переименовать ее, чтобы она соответствовала вашему фактическому модулю.

class Your_Module_Model_Source_Customer_Attribute
{
    public function toOptionArray()
    {
        $attributes = Mage::getModel('customer/entity_attribute_collection')
            // remove filter to allow default address ID, etc.
            ->addVisibleFilter();
        $result = array();
        foreach ($attributes as $attribute) {
            if (($label = $attribute->getFrontendLabel()))
                $result[$attribute->getId()] = $label;
        }
        return $result;
    }
}

Затем нам нужноодно новое поле в system.xml .

<fieldname translate="label">
    <label>Customer Attributes</label>
    <frontend_type>checkboxes</frontend_type>
    <source_model>yourmodule/source_customer_attribute</source_model>
    <show_in_default>1</show_in_default>
</fieldname>

вашего модуля. Это работает на удивление хорошо, удивительно, потому что эти классы не используются в ядре.Вместо checkboxes тип также может быть radios, который тоже работает.

0 голосов
/ 09 декабря 2011

Разобрался!

Это окончательный код.Очевидно, БОЛЬШОЕ спасибо за вашу помощь с кодом в первую очередь.

    $attributes = Mage::getModel('customer/entity_address_attribute_collection');
    $result = array();
    foreach ($attributes as $attribute)
    {
        if (($label = $attribute->getFrontendLabel()))
            $result[$attribute->getId()] = $label;
    }
    $attributes1 = Mage::getModel('customer/entity_attribute_collection');
    $result1 = array();
    foreach ($attributes1 as $attribute1)
    {
        if (($label1 = $attribute1->getFrontendLabel()))
            $result1[$attribute1->getId()] = $label1;
    }
    $final = array_merge($result, $result1);

    return $final; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...