如果管理员用户在创建产品或类别时,如果网址密钥已存在并显示错误消息并阻止产品/类别创建,直到他更改产品/类别名称或网址密钥,该如何通知管理员用户?
感谢。
答案 0 :(得分:0)
我已针对此问题实施了解决方案。我将在这里发布一个总结答案,如果有人有问题,请询问。
类别:创建一个观察者并为'catalog_category_save_before'事件添加一个url检查验证,可以用直接sql完成,如:
$query = " SELECT value_id
FROM catalog_category_entity_varchar
WHERE value = '" . $urlKey . "' AND attribute_id = (
SELECT attribute_id
FROM eav_attribute
WHERE entity_type_id = 3 AND attribute_code = 'url_key')
";
产品:这里有两件事......一件用于检查从产品名称创建的URL(如果保存产品上的url键为空),另一件在产品保存时指定了url密钥:
为产品'name'属性添加后端模型,如果未设置url key,则在validate()方法上检查重复值,如:
$urlKey = $object->getData('url_key');
if ($urlKey) {
return true;
}
if (!$this->getAttribute()->getEntity()->checkAttributeUniqueValue($this->getAttribute(), $object)) {
throw Mage::exception('Mage_Eav',
Mage::helper('eav')->__('The value of this attribute must be unique if you do not set explicit URL Key')
);
}
在config.xml中ovewrite urlkey后端模型和“name”属性相同,在validate()方法下添加重复检查,如:
if (!$this->getAttribute()->getEntity()->checkAttributeUniqueValue($this->getAttribute(), $object)) {
$label = $this->getAttribute()->getFrontend()->getLabel();
throw Mage::exception('Mage_Eav',
Mage::helper('eav')->__('The value of attribute "%s" must be unique', $label)
);
}