Пользовательский модуль magento adminhtml показывает сетку дважды - PullRequest
6 голосов
/ 03 августа 2011

Я новичок в magento, следуя этому руководству Пользовательский модуль с пользовательской таблицей базы данных

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

это код из моего grid.php

<?php

      class Ecom_Pricenotify_Block_Adminhtml_Pricenotify_Grid extends Mage_Adminhtml_Block_Widget_Grid{
public function __construct()
{
    parent::__construct();
    $this->setId('pricenotifyGrid');
    // This is the primary key of the database
    $this->setDefaultSort('pricenotify_id');
    $this->setDefaultDir('ASC');
    $this->setSaveParametersInSession(true);
}

protected function _prepareCollection()
{
    $collection = Mage::getModel('pricenotify/pricenotify')->getCollection();
    $this->setCollection($collection);
    return parent::_prepareCollection();
}

protected function _prepareColumns()
{
    $this->addColumn('pricenotify_id', array(
        'header'    => Mage::helper('pricenotify')->__('Notification ID'),
        'align'     =>'left',
        'width'     => '50px',
        'index'     => 'pricenotify_id',
    ));

    $this->addColumn('prod_id', array(
        'header'    => Mage::helper('pricenotify')->__('Product ID'),
        'align'     =>'left',
        'width'     => '50px',
        'index'     => 'prod_id',
    ));


    $this->addColumn('prod_price', array(
        'header'    => Mage::helper('pricenotify')->__('Product Price'),
        'align'     =>'left',
        'width'     => '50px',
        'index'     => 'prod_price',
    ));

    $this->addColumn('user_price', array(
        'header'    => Mage::helper('pricenotify')->__('User Price'),
        'align'     =>'left',
        'width'     => '50px',
        'index'     => 'user_price',
    ));

    $this->addColumn('email', array(
        'header'    => Mage::helper('pricenotify')->__('E-Mail Address'),
        'align'     =>'left',
        'width'     => '150px',
        'index'     => 'email',
    ));

    $this->addColumn('created_time', array(
        'header'    => Mage::helper('pricenotify')->__('Creation Time'),
        'align'     => 'left',
        'width'     => '120px',
        'type'      => 'date',
        'default'   => '--',
        'index'     => 'created_time',
    ));


    $this->addColumn('status', array(

        'header'    => Mage::helper('pricenotify')->__('Status'),
        'align'     => 'left',
        'width'     => '80px',
        'index'     => 'status',
        'type'      => 'options',
        'options'   => array(
            'success' => 'Inactive',
            'pending' => 'Active',
        ),
    ));

   return parent::_prepareColumns();
}

public function getRowUrl($row)
{
   return $this->getUrl('*/*/edit', array('id' => $row->getId()));
}}

, и эта функция indexAction из контроллера

  public function indexAction() {
    $this->_initAction();       
    $this->_addContent($this->getLayout()->createBlock('pricenotify/adminhtml_pricenotify'));
    $this->renderLayout();
  }

Ответы [ 5 ]

6 голосов
/ 08 октября 2012

Может быть, вы вставляете его в макет, проверьте прайс-лист.xml в

adminhtml> по умолчанию> по умолчанию> раскладка.

Например:

  <pricenotify_adminhtml_manager_pricenotify>
        <block type="core/text_list" name="root" output="toHtml">
            <block type="pricenotify/adminhtml_pricenotify_grid" name="pricenotify.grid"/>
        </block>
  </pricenotify_adminhtml_manager_pricenotify>

Удалите этот блок или прокомментируйте строку, в которую вы добавляете контент.

3 голосов
/ 04 августа 2011

Я исправил это.мне нужно было только закомментировать

//$this->_addContent($this->getLayout()->createBlock('pricenotify/adminhtml_pricenotify'));

из indexAction, я думаю, я загружал его дважды.

2 голосов
/ 03 августа 2011

убедитесь, что блок сетки еще не загружен в соответствующий файл layout.xml.

0 голосов
/ 01 марта 2016

В моем случае это произошло в Edit / Form, и я непреднамеренно дублировал renderLayout () на моем контроллере Adminhtml.

$this->renderLayout();
0 голосов
/ 13 октября 2015

Ну, я столкнулся с той же проблемой, но в моем случае это было связано со строкой $this->setId('messages'); (в вашей конструкции Grid.php). Поскольку magento уже имеет тот же <div id="messages"></div> на своей странице сетки (для отображения уведомлений), из-за чего содержимое моей сетки загружалось в этот тег 'div', следовательно, отображало сетку дважды. Таким образом, извлеченный урок состоит в том, чтобы не указывать общее имя при настройке своего идентификатора в Grid.php, который уже может присутствовать на странице сетки.

...