Модуль Magento Custom - как добавить пользовательский блок выбора с родительскими категориями - PullRequest
2 голосов
/ 15 ноября 2010

Я написал модуль, чтобы иметь собственную строку меню, а не просто использовать категории в качестве строки меню.

Итак, здесь я хочу показать уже добавленные меню при добавлении нового меню в 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, чтобы у меня мог быть выпадающий список, чтобы показать их все, и после добавления он должен быть добавлен в базу данных.

Пожалуйста, помогите мне, я борюсь здесь.

1 Ответ

8 голосов
/ 16 ноября 2010

Вы можете сделать это, добавив эти строки.

В ниспадающем списке будут показаны уже добавленные меню, чтобы вы могли выбрать любое из них в качестве родительского меню для текущего элемента.

      $_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,
  ));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...