Страница Magento — Admin Grid, удваивающая основные поля

Я работаю над пользовательским расширением Magento (1.9.0.1 версии).

Позвольте мне описать вам мою проблему в картинках:

Когда я нажимаю кнопку, чтобы перейти на следующую страницу:

введите описание изображения здесь

И тогда возникает эта проблема:

введите описание изображения здесь

Как видите, по любой причине поля Magento, указанные на рисунке, удваиваются, а Loading блок в середине не исчезает.

Позвольте мне показать вам весь мой конфигурационный файл:

<?xml version="1.0"?>
<config>
<modules>
<VivasIndustries_SmsNotification>
<version>1.0.0</version>
</VivasIndustries_SmsNotification>
</modules>
<global>
<models>
<smsnotification>
<class>VivasIndustries_SmsNotification_Model</class>
<resourceModel>vivasindustries_smsnotification_resource</resourceModel>
</smsnotification>
<vivasindustries_smsnotification_resource>
<class>VivasIndustries_SmsNotification_Model_Resource</class>
<entities>
<smsnotification>
<table>VivasIndustries_SmsNotification</table>
</smsnotification>
<smsnotificationhistory>
<table>VivasIndustries_SmsHistory</table>
</smsnotificationhistory>
</entities>
</vivasindustries_smsnotification_resource>
</models>
<resources>
<smsnotification_setup>
<setup>
<module>VivasIndustries_SmsNotification</module>
</setup>
<connection>
<use>core_setup</use>
</connection>
</smsnotification_setup>
<smsnotification_read>
<connection>
<use>core_read</use>
</connection>
</smsnotification_read>
<smsnotification_write>
<connection>
<use>core_write</use>
</connection>
</smsnotification_write>
</resources>
<events>
<sales_order_save_after>
<observers>
<vivasindustries_smsnotification>
<class>smsnotification/observer</class>
<method>orderSaved</method>
</vivasindustries_smsnotification>
</observers>
</sales_order_save_after>
</events>
<helpers>
<smsnotification>
<class>VivasIndustries_SmsNotification_Helper</class>
</smsnotification>
</helpers>
<blocks>
<smsnotification>
<class>VivasIndustries_SmsNotification_Block</class>
</smsnotification>
</blocks>
</global>
<adminhtml>
<acl>
<resources>
<all>
<title>Allow Everything</title>
</all>
<admin>
<children>
<system>
<children>
<config>
<children>
<vivas>
<title>Vivas - All</title>
</vivas>
</children>
</config>
</children>
</system>
</children>
</admin>
</resources>
</acl>
<layout>
<updates>
<smsnotification>
<file>smsnotification.xml</file>
</smsnotification>
</updates>
</layout>
</adminhtml>
<admin>
<routers>
<adminhtml>
<args>
<modules>
<VivasIndustries_SmsNotification before="Mage_Adminhtml">VivasIndustries_SmsNotification_Adminhtml</VivasIndustries_SmsNotification>
</modules>
</args>
</adminhtml>
</routers>
</admin>
</config>

Вот файлы, которые создают таблицу сетки:

<?php

class VivasIndustries_SmsNotification_Block_Adminhtml_Sms_History extends Mage_Adminhtml_Block_Widget_Grid_Container{
public function __construct()
{
$this->_controller = 'adminhtml_sms_history';
$this->_blockGroup = 'smsnotification';
$this->_headerText = Mage::helper('smsnotification')->__('SMS History');

parent::__construct();

$this->_removeButton('add');
}
}

А также:

<?php

class VivasIndustries_SmsNotification_Block_Adminhtml_Sms_History_Grid extends Mage_Adminhtml_Block_Widget_Grid
{
public function __construct()
{
parent::__construct();
$this->setId('smsnotification_grid');
$this->setDefaultSort('id');
$this->setDefaultDir('DESC');
$this->setSaveParametersInSession(true);
$this->setUseAjax(true);
}protected function _prepareCollection()
{
$collection = Mage::getResourceModel('smsnotification/smsnotificationhistory_collection');
$this->setCollection($collection);
return parent::_prepareCollection();
}protected function _prepareColumns()
{
$this->addColumn('id', array(
'header'    => Mage::helper('smsnotification')->__('ID'),
'align'     =>'right',
'width'     => '50px',
'index'     => 'id',
));

$this->addColumn('receiver', array(
'header'    => Mage::helper('smsnotification')->__('Receiver'),
'align'     =>'left',
'index'     => 'receiver',
));

$this->addColumn('phone', array(
'header'    => Mage::helper('smsnotification')->__('Phone'),
'align'     =>'left',
'index'     => 'phone',
));

$this->addColumn('email', array(
'header'    => Mage::helper('smsnotification')->__('Email'),
'align'     =>'left',
'index'     => 'email',
));

$this->addColumn('smstext', array(
'header'    => Mage::helper('smsnotification')->__('SMS Text'),
'align'     =>'left',
'index'     => 'smstext',
));

$this->addColumn('date', array(
'header'    => Mage::helper('smsnotification')->__('Date'),
'align'     =>'left',
'index'     => 'date',
));return parent::_prepareColumns();
}

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

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

Спасибо!

3

Решение

Когда вы используете метод setUseAjaxMagento попытается перезагрузить только сетку на странице через ajax.

Таким образом, чтобы это работало, вы должны указать Magento, какой URL он должен получить, чтобы иметь скриншот, и только сетку, чтобы обновить его через ajax, в противном случае он будет неправильно предполагать, что он должен обновить сетку с помощью URL текущей страницы, поэтому добавление заголовка администратора во второй раз в div должен содержать только сетку. Как на ваших скриншотах.

Есть способ пойти:

В VivasIndustries_SmsNotification_Block_Adminhtml_Sms_History_Grid добавьте эту функцию:

public function getGridUrl()
{
return $this->getUrl('*/*/smsGrid', array('_current'=>true));
}

Таким образом, вы также должны добавить это действие в свой контроллер VivasIndustries_SmsNotification_Adminhtml и визуализировать блок с вашей сеткой и только этот.
Как это :

public function smsGridAction()
{
$this->getResponse()
->setBody($this->getLayout()
->createBlock('smsnotification/adminhtml_sms_history_grid')
->toHtml()
);
}

И тебе должно быть хорошо идти.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]