Magento system.xml分组多选

时间:2014-10-10 09:00:57

标签: php magento

在管理面板菜单中 - >配置我有一个标签。 我正在使用:

<frontend_type>Multiselect</frontend_type>  
<source_model>adminhtml/system_config_source_customer_group_multiselect</source_model>

我得到一个三个用户组,即GENERAL,RETAIL,WHOLESELER。

问题,如何获得第四组,即一个NOT LOGGED IN?

2 个答案:

答案 0 :(得分:3)

您可以在system.xml

中定义自己的观察者,而不是调用核心模型

请找到以下代码来解决您的问题。

 <source_model>adminhtml/system_config_source_GroupCollection</source_model>

现在在下面的路径中在本地\ community(工作目录)中创建GroupCollection.php文件。

e.g app\code\local\Mage\Adminhtml\Model\System\Config\Source\GroupCollection.php

在该文件中添加以下代码。

<?php
class Mage_Adminhtml_Model_System_Config_Source_GroupCollection
{
 /**
     * Options getter
     *
     * @return array
     */
     public function toOptionArray()
    {
        $group = Mage::getModel('customer/group')->getCollection();
        $groupArray = array();
        foreach ($group as $eachGroup) {
        $groupData = array(
                    'customer_group_id' => $eachGroup->getCustomerGroupId(),
                    'customer_group_code' => $eachGroup->getCustomerGroupCode(),
                     'tax_class_id' => $eachGroup->getTaxClassId() // we dont required this
                    );
        if (!empty($groupData)) {
            array_push($groupArray, $groupData);
        }
       }
          var_dump($groupArray);
    }
}

以下将是您的输出。

array (size=4)
  0 => 
    array (size=3)
      'customer_group_id' => string '0' (length=1)
      'customer_group_code' => string 'NOT LOGGED IN' (length=13)
      'tax_class_id' => string '3' (length=1)
  1 => 
    array (size=3)
      'customer_group_id' => string '1' (length=1)
      'customer_group_code' => string 'General' (length=7)
      'tax_class_id' => string '3' (length=1)
  2 => 
    array (size=3)
      'customer_group_id' => string '2' (length=1)
      'customer_group_code' => string 'Wholesale' (length=9)
      'tax_class_id' => string '3' (length=1)
  3 => 
    array (size=3)
      'customer_group_id' => string '3' (length=1)
      'customer_group_code' => string 'Retailer' (length=8)
      'tax_class_id' => string '3' (length=1)

你完成了! :)

答案 1 :(得分:1)

你不需要创造&#39; Mage&#39;目录&#39;本地&#39;或重写核心模块!如果您要查看 app/code/core/Mage/Adminhtml/Model/System/Config/Source/Customer/Group/Multiselect.php ,您会看到此课程没有任何延伸!因此,您可以在您的文件夹 NameSpace/ModuleName/Model 创建自己的 Exemple.php ,然后只需复制 所有 从Multiselect.php到 Exemple.php ,修复那里你想要的(在你的情况下只删除 ->setRealGroupsFilter() 字符串),并设置你的模型的system.xml。 例如,如果在config.xml中有

<models>
    <my_model>
        <class>NameSpace_ModuleName_Model</class>
    </my_model>
</models>

比你必须写

<source_model>my_model/exemple</source_model>

在你的system.xml中!