在传递模型之前解析属性值

时间:2018-06-21 17:02:08

标签: php model yii2 attributes behavior

我想在发布模型中实现内容解析器,该模型在将内容传递给控制器​​之前先对其进行解析。因此,我认为最好的解决方案是管理该问题的一种方式,但是我没有找到解决此问题的方法。

我不想将值写入数据库,但是我想在将加载的值传递给控制器​​之前先对其进行解析。

有什么主意吗?

1 个答案:

答案 0 :(得分:2)

根据文档,我同意穆罕默德·奥默·阿斯兰(afterFind()

  创建ActiveRecord对象并使用查询填充时调用

  结果。默认实现将触发   [[EVENT_AFTER_FIND]]事件。

有时候,在可视化模型的属性或将其用于控制​​器的任何其他操作之前,我需要格式化模型的属性。通过在模型中覆盖afterFind()可以解决此问题。

例如,要在查看某个对象之前格式化其创建日期,我们可以在相应的模型中编写以下内容。

public function afterFind()
{
    parent::afterFind();
    /* change format date */
    $parse = Yii::$app->formatter;
    $this->created_at = $parse->asDate($this->created_at, 'php:Y-m-d H:i:s');
}