Magento - JavaScript错误阻止添加和保存类别

时间:2014-03-26 17:21:49

标签: magento magento-1.9 magento-1.8

我正在尝试在本地安装的Magento CE 1.8.1上添加新的根类别,但是当我按下保存类别按钮时,我在控制台中收到以下错误,屏幕上没有任何反应。

我曾尝试重新安装所有核心文件等,但似乎没有解决此问题。

Uncaught TypeError: Cannot read property 'split' of undefined

2 个答案:

答案 0 :(得分:0)

这是ajax例程中的一个Javascript错误,它将表单数据发送到Magento服务器。导致错误的代码是

var path = params['general[path]'].split('/');

general [path]表示类别层次结构,因此根类别应始终具有

params['general[path]'] = 1

但是子类别将具有其父类别的ID。

这是一个奇怪的错误。你能成功制作子类吗?你能弄清楚为什么表单提交没有设置字段一般[路径]?如果您检查“添加新的根类别页面”的HTML页面来源'你应该看到这样的代码,不是吗?

<input id="group_4path" type="hidden" value="1" name="general[path]">

您收到的错误表明您在新的根类别表单中没有这一行HTML。 (或者可能在此之前有一个Javascript错误,关于设置类别路径,但首先查找该HTML并请报告回来。您可以添加一些JavaScript断点来检查变量并尝试理解为什么一般[路径] ]最终未定义。)

答案 1 :(得分:0)

真正的问题

Mage_Adminhtml_Block_Catalog_Category_Tab_Attributes

开始

_prepareForm函数中是if条件(if ($this->getAddHiddenFields())),可确保隐藏字段general[id]general[path]不会呈现,因为它始终返回{{1 }}

一个糟糕的解决方案是删除if条件。

但由于核心变化很糟糕,新奇怪的是false是什么以及它为什么会返回getAddHiddenFields()

解决方案( for now ):

在数据库表false中搜索与以下查询匹配的条目:

eav_attribute_group

并将SELECT * FROM `eav_attribute_group` WHERE default_id = 1 AND sort_order > 1; 设置为1

说明:

我的第一个问题的回答(什么是sort_order): getAddHiddenFields()是一种神奇的方法,它返回varien对象字段getAddHiddenFields()的值。 'add_hidden_fields'的值由'add_hidden_fields'中的setAddHiddenFields()设置。

对于我的第二个问题的答案(为什么它总是返回Mage_Adminhtml_Block_Catalog_Category_Tabs->_prepareLayout())我创建了一个小的调试日志:

false

注意1: 记住$ defaultGroupId初始化为0,因此groupCollection的第一个条目将被设置为默认值(因此当前解决方案是将defaultGroups sortOrder设置为1)

注意2: 哦,看看下一个群体$ group-&gt; getIsDefault()第3组返回FALSE(在我的情况下是第3组General,在数据库中is_default = 1) 我还没有测试过,因为目前的解决方案对我来说已经足够了。