当我编辑产品时,我需要将字段的初始值存储到另一个隐藏的字段中。我需要这样做,以便将旧值与更新后的值进行比较(如验证)。
我创建了一个新属性,并将'is_visible'设置为0,但我的问题是如何设置此属性以获得与另一个属性相同的值。
示例:
答案 0 :(得分:3)
这可能无法回答您的问题,但它可能是您问题的解决方案 保存产品时,您仍然可以访问旧数据。例如,您可以像这样访问旧名称:
$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
,并且不会保存产品。