添加隐藏属性以存储其他属性值

Add hidden attributes to store other attributes values

本文关键字:属性 其他 存储 隐藏 添加      更新时间:2024-05-26

当我编辑产品时,我需要将一个字段的初始值存储到另一个隐藏的字段中。我需要这样做,以便将旧值与更新值进行比较(就像验证一样)。

我创建了一个新属性,并将"is_visible"设置为0,但我的问题是如何设置此属性以获得与另一个属性相同的值。

示例:

  • 产品的属性"name"的值为"Product1"
  • 我的新隐藏属性"name_hidden"应该具有相同的值
  • 我将"名称"字段编辑为"新产品"
  • 当我点击保存按钮时,我想检查"name"字段的值是否等于"name_hidden"

这可能不能回答您的问题,但它可能是您问题的解决方案
保存产品时,您仍然可以访问旧数据。例如,您可以访问这样的旧名称:

$oldName = $product->getOrigData('name');

您不需要任何新的隐藏属性就可以将旧值与新值进行比较
此外,您还可以观察事件catalog_product_validate_beforecatalog_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,产品将不会保存。