首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >添加隐藏属性以存储其他属性值

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

Stack Overflow用户
提问于 2013-12-10 12:42:06
回答 1查看 103关注 0票数 0

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

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

示例:

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

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-10 13:09:59

这可能回答不了你的问题,但它可能是一个解决你的问题。

在保存产品时,您仍然可以访问旧数据。例如,您可以像这样访问旧名称:

代码语言:javascript
代码运行次数:0
运行
复制
$oldName = $product->getOrigData('name');

您不需要任何新的隐藏属性来比较旧值和新值。

此外,您还可以观察其中一个事件catalog_product_validate_beforecatalog_product_validate_after,您可以在其中添加逻辑来验证新值。并通过抛出异常将错误发回。这将不会刷新产品页面,并将在字段下面显示错误。就像这样:

代码语言:javascript
代码运行次数:0
运行
复制
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,并且不会保存产品。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20494892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档