大规模行动;不适用于Magento后端网格序列化程序


Mass action doesn't work for Magento backend grid serializer

我使用本教程中的网格序列化程序在选项卡中创建了一个网格。然后,我使用本教程向这个网格添加了一个屠杀。

大规模操作块已经出现,但当我选择实体,选择屠杀并单击提交时,以下错误已经被抛出到浏览器的控制台:

"ReferenceError: {gridId}_massactionJsObject is not defined"

有人尝试过在选项卡内的网格中添加大规模操作吗?如何解决此错误?

不删除抽象类中的var,而是将对象设置为窗口。

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

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

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

我今天刚刚尝试过,在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