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

时间:2013-12-10 12:42:06

标签: javascript magento

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

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

示例:

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

1 个答案:

答案 0 :(得分:3)

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

$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,并且不会保存产品。