编辑产品时,需要将字段的初始值存储到另一个隐藏字段中。我需要这样做,以便将旧值与更新的值进行比较(比如验证)。
我创建了一个新属性,并将'is_visible‘设置为0,但我的问题是如何设置该属性以获得与另一个属性相同的值。
示例:
发布于 2013-12-10 05:09:59
这可能回答不了你的问题,但它可能是一个解决你的问题。
在保存产品时,您仍然可以访问旧数据。例如,您可以像这样访问旧名称:
$oldName = $product->getOrigData('name');
您不需要任何新的隐藏属性来比较旧值和新值。
此外,您还可以观察其中一个事件catalog_product_validate_before
或catalog_product_validate_after
,您可以在其中添加逻辑来验证新值。并通过抛出异常将错误发回。这将不会刷新产品页面,并将在字段下面显示错误。就像这样:
public function validateProduct($observer){
$product = $observer->getEvent()->getProduct();
if ($product->getName() == $product->getOrigData('name')){ //if the name hasn't changed...feel free to change this to a condition that fits your needs.
$up = new Mage_Eav_Model_Entity_Attribute_Exception();
$up->setMessage('name should be changed');
$up->setAttributeCode('name');
throw $up; //get it? :D.
}
}
这将在名称输入下面显示错误消息name should be changed
,并且不会保存产品。
https://stackoverflow.com/questions/20494892
复制相似问题