2013-10-02 86 views
0

我目前正在爲將要列出員工的magento開發一個自定義模塊。Magento Admin formfield多重選擇

我已經想出了幾乎所有的東西。我剩下的唯一東西就是選定的值將如何突出顯示。

我遇到的問題是後端。

我每個員工有兩個標籤,一個是員工數據,一個是magento分類標籤。

1名員工可以擁有1個或多個類別。

類別存儲在其中的數據庫表是非eav表。

所以我的問題是 什麼在多選選擇決定哪些值被選中?像現在一樣,只選擇一個值。

回答

7

我認爲你可以通過簡單地將要選擇的id的數組傳遞給爲_prepareForm()方法中的多重選擇添加的字段的'value'屬性來完成此操作。像下面這樣。

$fieldset->addField('category_id', 'multiselect', array(
      'name' => 'categories[]', 
      'label' => Mage::helper('cms')->__('Store View'), 
      'title' => Mage::helper('cms')->__('Store View'), 
      'required' => true, 
      'values' => Mage::getSingleton('mymodule/mymodel')->getMymodelValuesForForm(), 
      'value' => array(1,7,10), 
)); 

表單元素的ID(例如CATEGORY_ID)不能在你的模型的屬性,否則當表單值被置以$形式 - > setValues方法()以後,該屬性值將被覆蓋。

我通常會將多個選擇存儲爲逗號分隔的文本列,與大多數magento模塊處理存儲時所需的方式相似,如下所示。

在帶有多重選擇的選項卡的表單塊中,首先定義要在_prepareForm()方法中顯示的元素。然後您可以從模型中獲取值並將其設置爲表單數據。

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

    if (Mage::getSingleton('adminhtml/session')->getMymodelData()) 
    { 
     $data = Mage::getSingleton('adminhtml/session')->getMymodelData(); 
    } elseif (Mage::registry('mymodel_data')) { 
     $data = Mage::registry('mymodel_data')->getData(); 
    } 

    $data['store_id'] = isset($data['stores']) ? explode(',', $data['stores']) : array(); 
    $form->setValues($data); 
} 

我通常所選擇的存儲(類別,你的情況)存儲在主模式作爲ID的文本列和逗號分隔值,因此爆炸。

在用於編輯操作的控制器中,我將正在編輯的模型放入法師註冊表中,以便我們可以在上面的步驟中加載它以及它的值。

Mage::register('mymodel_data', $model); 
+2

@cpuweb你應該接受阿什利Swatton的回答這是非常好的。 –

2

感謝您的回答。

這是我場的樣子:

$fieldset->addField('npn_CatID', 'multiselect', array(
      'label' => Mage::helper('employeelist')->__('Kategori'), 
      'class' => 'required-entry', 
      'required' => true, 
      'name'  => 'npn_CatID', 
      'values' => $data, 
      'value' => array(3,5) 
     )); 

npn_CatID就是類ID保存在我的分貝值。 我試圖改變名稱和字段ID,但不能得到它的工作。 當其ID字段是像上面一個值被選中,它的最後一個插入所選擇的員工

我的數據陣列看起來喜歡

array(array('value' => '1', 'label' => 'USB'), array('value' => '2', 'label' => 'Memories'))