2010-11-15 50 views
2

我寫了一個模塊有我自己的菜單欄,而不是隻使用類別作爲菜單欄。Magento自定義模塊 - 如何添加與父類別的自定義選擇框

所以,在這裏我想顯示已經添加的菜單,同時在我的自定義菜單模塊的Tab/Form.php中添加新菜單。如何將所有現有菜單名稱顯示爲表單上的下拉列表/選項列表。這是我用來菜單形式的代碼。

$form = new Varien_Data_Form(); 
     $this->setForm($form); 
     $fieldset = $form->addFieldset('menu_form', array('legend'=>Mage::helper('menu')->__('Menu information'))); 

    $note = "Name of this Menu"; 
    $fieldset->addField('title', 'text', array(
     'label'  => Mage::helper('menu')->__('Menu Name'), 
     'class'  => 'required-entry', 
     'required' => true, 
     'note'  => $note, 
     'name'  => 'title', 
)); 


    $note = "Menu level"; 
    $fieldset->addField('level', 'select', array(
     'label'  => Mage::helper('menu')->__('Menu level'), 
     'name'  => 'level', 
     'note'  => $note, 
     'values' => array(
      array(
       'value'  => 1, 
       'label'  => Mage::helper('menu')->__('Level 1'), 
     ), 

      array(
       'value'  => 2, 
       'label'  => Mage::helper('menu')->__('Level 2'), 
     ), 
    ), 
)); 

    $model = Mage::registry('menu'); 
    $fieldset->addField('parent', 'text', array(
     'name' => 'conditions', 
     'label' => Mage::helper('menu')->__('Parent Menu'), 
     'title' => Mage::helper('menu')->__('Parent Menu'), 
     'required' => false, 
     'note'  => $note, 
))->setRule($model)->setRenderer(Mage::getBlockSingleton('rule/conditions')); 

$fieldset->addField('target', 'select', array(
     'label'  => Mage::helper('menu')->__('Open in new window'), 
     'name'  => 'target', 
     'values' => array(
      array(
       'value'  => "_blank", 
       'label'  => Mage::helper('menu')->__('Yes'), 
      ), 

      array(
       'value'  => "_self", 
       'label'  => Mage::helper('menu')->__('No'), 
      ), 
     ), 
    )); 

    $fieldset->addField('status', 'select', array(
     'label'  => Mage::helper('menu')->__('Status'), 
     'name'  => 'status', 
     'values' => array(
      array(
       'value'  => 1, 
       'label'  => Mage::helper('menu')->__('Enabled'), 
     ), 

      array(
       'value'  => 2, 
       'label'  => Mage::helper('menu')->__('Disabled'), 
     ), 
     ), 
    )); 


    $note = "Menu Links to Which page. BaseURL(<b>".str_ireplace("index.php/","",Mage::getBaseUrl())."</b>) Will be Added Dynamically, Please add Your new page Refrence alone"; 
    $fieldset->addField('menulink', 'text', array(
     'label'  => Mage::helper('menu')->__('URL'), 
     'required' => true, 
     'class'  => 'required-entry', 
     'note'  => $note, 
     'name'  => 'menulink', 
)); 


    $fieldset->addField('position', 'select', array(
     'label'  => Mage::helper('menu')->__('Position'), 
     'name'  => 'position', 
     'values' => array(
      array(
       'value'  => 1, 
       'label'  => Mage::helper('menu')->__('Top 1'), 
     ), 

      array(
       'value'  => 2, 
       'label'  => Mage::helper('menu')->__('Top 2'), 
     ), 
     ), 
)); 



    if (Mage::getSingleton('adminhtml/session')->getMenuData()) 
    { 
     $form->setValues(Mage::getSingleton('adminhtml/session')->getMenuData()); 
     Mage::getSingleton('adminhtml/session')->setMenuData(null); 
    } elseif (Mage::registry('menu_data')) { 
     $form->setValues(Mage::registry('menu_data')->getData()); 
    } 
    return parent::_prepareForm(); 

在這我想顯示所有添加菜單下的父菜單選項。我應該在Model類中寫什麼,以便我可以有一個下拉列表來顯示它們,添加後應該添加到數據庫中。

請幫我,我在這裏掙扎。

回答

8

您可以通過添加這些行來完成此操作。

它將顯示已添加的菜單作爲下拉列表,以便您可以選擇其中任何一個作爲當前項目的父菜單。

 $_menus = Mage::getSingleton('menus/menus')->getCollection(); 
     foreach($_menus as $item) 
    { 
     if($item->getParent == NULL){ 
      $_menuItems[] = array(
         'value'  => $item->getId(), 
         'label'  => $item->getTitle(), 
        ); 
     } 
    } 

    $note = "Choose the parent menus for this item"; 
    $fieldset->addField('parent', 'select', array(
     'name'  => 'parent', 
     'label'  => Mage::helper('menus')->__('Parent Menu'), 
     'title'  => Mage::helper('menus')->__('Parent Menu'), 
     'required' => false, 
     'note'  => $note, 
     'class'  => 'HideIt', 
     'values' => $_menuItems, 
));