添加隐藏属性以存储其他属性值
Add hidden attributes to store other attributes values
当我编辑产品时,我需要将一个字段的初始值存储到另一个隐藏的字段中。我需要这样做,以便将旧值与更新值进行比较(就像验证一样)。
我创建了一个新属性,并将"is_visible"设置为0,但我的问题是如何设置此属性以获得与另一个属性相同的值。
示例:
- 产品的属性"name"的值为"Product1"
- 我的新隐藏属性"name_hidden"应该具有相同的值
- 我将"名称"字段编辑为"新产品"
- 当我点击保存按钮时,我想检查"name"字段的值是否等于"name_hidden"
这可能不能回答您的问题,但它可能是您问题的解决方案
保存产品时,您仍然可以访问旧数据。例如,您可以访问这样的旧名称:
$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
,产品将不会保存。
相关文章:
- chart.series[id].remove()无法刷新高位图表/高位股票中其他系列的图例属性
- 如何使用object.assign()从其他对象引用基本对象属性
- 对象获胜'如果qml中的其他地方定义了数字动画属性,则t设置动画
- 从其他元素上的单击事件访问image src属性
- 基本D3.js:如何将具有其他属性的数据绑定到元素
- 为数组元素的属性赋值将设置所有其他类似元素的属性
- 如何在 JavaScript 中访问函数中的其他属性值作为对象属性值
- 基于其他属性查询多维数组属性
- AngularJS:必需属性适用于某些字段,但不适用于其他字段
- 向ChartJS数据集添加其他属性
- 根据其他属性返回的值设置属性
- VueJS:检查属性是否具有来自其他属性的值
- 尝试分配只读属性,即使相同的命令在其他地方也有效
- 如何在EmberJS模板中访问存储在其他变量中的键中的对象属性的值
- 对象属性引用JavaScript中的其他对象属性
- 添加隐藏属性以存储其他属性值
- jquery在html属性中添加函数回调,以便在其他事件中调用
- 车把JS使用另一个属性的结果作为其他地方的名称
- 在环铆钉 js 中设置其他属性
- 如何设置我们从 JavaScript 中其他元素的属性返回的值 onclick 函数