我正在尝试在本地安装的Magento CE 1.8.1上添加新的根类别,但是当我按下保存类别按钮时,我在控制台中收到以下错误,屏幕上没有任何反应。
我曾尝试重新安装所有核心文件等,但似乎没有解决此问题。
Uncaught TypeError: Cannot read property 'split' of undefined
答案 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()
?
在数据库表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) 我还没有测试过,因为目前的解决方案对我来说已经足够了。