我在自定义模块中存储下拉列值时遇到问题。我在后端创建了用于存储“郊区”的表单,以及另一种用于保存“区域”的表单。在这种形式的区域中有一个下拉值,其中的值从郊区表中填充,即郊区名称。我的问题是在保存这个区域时,下拉列表的值存储在数据库表中(即'1','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;
}