我使用本教程中的网格序列化程序在选项卡中创建了一个网格。然后,我使用本教程向这个网格添加了一个屠杀。
大规模操作块已经出现,但当我选择实体,选择屠杀并单击提交时,以下错误已经被抛出到浏览器的控制台:
"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