商店"标签"下拉而不是"值"在表magento

时间:2014-05-05 03:27:38

标签: magento

我在自定义模块中存储下拉列值时遇到问题。我在后端创建了用于存储“郊区”的表单,以及另一种用于保存“区域”的表单。在这种形式的区域中有一个下拉值,其中的值从郊区表中填充,即郊区名称。我的问题是在保存这个区域时,下拉列表的值存储在数据库表中(即'1','2'),但我想存储标签(即选择的郊区名称)。我怎么能这样做,请任何人帮忙吗?

2 个答案:

答案 0 :(得分:1)

您可以使用简单的JavaScript代码

来创建此功能
<select name="menu" id="menu">
<option value="1">label 1</option>
<option value="2">label 2</option>
</select>
<input type="text" name="selectedMenu" id="selectedMenu" value="">

<script type="text/javascript">

</script>
  

JSFIDDLE演示

     

这里link !!

答案 1 :(得分:0)

现在,管理部分中为下拉列表调用的主要方法来自此类: 从上面的source_model字段中可以看到Mage_Eav_Model_Entity_Attribute_Source_Table。 方法是这样的:

public function getAllOptions($withEmpty = true)
    {
        if (is_null($this->_options)) {
            $this->_options = Mage::getResourceModel('eav/entity_attribute_option_collection')
                ->setAttributeFilter($this->getAttribute()->getId())
                ->setStoreFilter($this->getAttribute()->getStoreId())
                ->setPositionOrder('asc')
                ->load()
                ->toOptionArray();
        }
        $options = $this->_options;
        if ($withEmpty) {
            array_unshift($options, array('label'=>'', 'value'=>''));
        }
        //print_r($options);
        return $options;
    }

现在,这个方法的作用是为我们的attribute_id和store_id获取此模型的所有记录“eav / entity_attribute_option_collection” 然后它用“label”和“value”填充数组。 您需要更改该表中字段的source_model,将其设置为“eav / entity_attribute_source_table2”。所以只是复制了同一个类,给它一个新的名字等等。

您需要做的就是更改该方法

public function getAllOptions($withEmpty = true)
    {     
        $options[] = array('label' => '', 'value'=>'');
        $options[] = array('label' => 'Test1', 'value'=>'1');
        $options[] = array('label' => 'Test2', 'value'=>'2');
        $options[] = array('label' => 'Test3', 'value'=>'3');
        $options[] = array('label' => 'Test4', 'value'=>'4');
        $this->_options = $options;
        print_r($options);
        return $options;
    }