我有一个自定义社区模块,其中我想要允许存储多选择下拉。

我已经显示了下拉,但是当我保存它的值时,如果我编辑表单,我就不会看到所选值突出显示,尽管值在数据库中正确存储。

任何人都可以让我知道,表单中缺少的是什么?

有帮助吗?

解决方案

可以将此添加到您的form.php

$fieldset->addField('store_id','multiselect',array(
            'name'      => 'stores[]',
            'label'     => Mage::helper('banners')->__('Store View'),
            'title'     => Mage::helper('banners')->__('Store View'),
            'required'  => true,
            'values'    => Mage::getSingleton('adminhtml/system_store')->getStoreValuesForForm(false, true)
        ));
.

,您必须在模块中具有_afterLoad功能

class Mage_Banners_Model_Mysql4_Banners extends Mage_Core_Model_Mysql4_Abstract
{
    public function _construct()
    {    
        // Note that the banners_id refers to the key field in your database table.
        $this->_init('banners/banners', 'banners_id');
    }


 protected function _afterLoad(Mage_Core_Model_Abstract $object)
{

    $select = $this->_getReadAdapter()->select()
        ->from($this->getTable('banners_store'))
        ->where('banners_id = ?', $object->getId());

    if ($data = $this->_getReadAdapter()->fetchAll($select)) {
        $storesArray = array();
        foreach ($data as $row) {
            $storesArray[] = $row['store_id'];
        }
        $object->setData('store_id', $storesArray);
    }

    return parent::_afterLoad($object);

}
.

上面的代码只是为了您的帮助,您可以根据您的列名和数据库表设置它

许可以下: CC-BY-SA归因
scroll top