批量操作不适用于 Magento 后端网格序列化程序

Mass action doesn't work for Magento backend grid serializer

我使用 this tutorial. Then I've added a massaction to this grid using this tutorial 使用网格序列化程序在选项卡内创建了一个网格。

出现了批量操作块,但是当我选择实体时,选择批量操作并单击提交,浏览器控制台抛出以下错误:

"ReferenceError: {gridId}_massactionJsObject is not defined"

有没有人试过在选项卡内的网格中添加质量操作?如何解决这个错误?

我今天刚试过,运行 在 Magento CE 1.8 上遇到了同样的问题。经过一番挖掘,我和一位同事发现 grid.phtml(第 207-224 行)中的 JavaScript 是 运行 但没有出现在 DOM 中(仍然不确定为什么)。使用控制台时,我们注意到 varienGrid 对象是可访问的,因为它是全局的,因为它没有定义 var.

话虽如此,我们在函数getJavascript()(第225行)中找到了Abstract.php中的质量动作js,并删除了var 来自变量定义。这为我们解决了问题,希望能帮助您。另外,你不应该修改核心。该文件应复制到本地并在那里修改。

grid.phtml - app/design/adminhtml/default/default/template/widget/grid.phtml

Abstract.php - app/code/core/Mage/Adminhtml/Block/Widget/Grid/Massaction/Abstract.php

不要在抽象 class 中删除 var,只需将对象设置为 window。

在 app/design/adminhtml/default/default/template/widget/grid.phtml 中调用 getAdditionalJavascript()

在您的网格文件中添加此函数。

protected function getAdditionalJavascript() {
    return 'window.{gridId}_massactionJsObject = {gridId}_massactionJsObject;';
}