Yii2行为/场景修改属性

时间:2015-09-22 03:57:36

标签: yii2 behavior scenarios

我有一个模型“产品”,我想修改或“改变”其中一个属性,但仅限于特定情况。

我将属性价格存储为整数。所以1.99美元存储为199.

我想将其与 activeForm 结合使用,以便在获得价格时,它会在字段中(视觉上)转换为“1.99”。但是当我提交表格时,在验证之前,它会将价格从“1.99”修改为“199”。

我假设这将需要行为,并且在创建活动表单之前特别将行为附加到模型。但是,我仍然对如何设置它感到困惑。我看到有一个AttributeBehavior类,或者我可以创建自己的Behavior类,但在这种情况下我一直无法确定实现。

情况:

foreach ($store_item->storeProducts as $i=>$product) {
?>
 <tr>
     <td>
       <?= $form->field($product, '['.$i.']price')->label(false); ?>
     </td>
 </tr>
 <?php 
    $i++;
  }
 ?>

2 个答案:

答案 0 :(得分:2)

这是我检查空属性并在保存前指定值的方案。注意owner返回模型,以便您可以访问公共的模型属性和函数。如果我能进一步解释,请告诉我

ExitActions

答案 1 :(得分:1)

你可以简单地使用一个getter / setter,例如:

public function getRealPrice()
{
    return $this->price/100;
}

public function setRealPrice($value)
{
    $this->price = $value*100;
}

不要忘记:

  • 在模型规则中添加realPrice
  • 在表单中使用realPrice(而不是price)。