更改一个属性值Yii2 REST API

时间:2016-06-23 05:33:15

标签: rest yii2 yii2-model

我使用ActiveController在Yii2中创建了一个REST API。 actionIndex的默认实现返回所有模型。 我想要做的是在发送响应之前更改一个属性的值。 例如,我上传的图像只是其名称存储在数据库中。 在发送响应之前,我想嵌入带有图像名称的基本URL。 我是否需要覆盖整个索引方法,或者我可以在action方法中操作单个属性?

2 个答案:

答案 0 :(得分:3)

我认为最简单的方法是覆盖模型中的fields()方法。假设您已为名为YourFile的模型配置了ActiveController。如果将以下函数添加到YourFile模型,则可以为响应中的每个模型添加完整URL:

public function fields() {
    return [
        'id',
        'name' => function() {
            return Url::base(true) . $this->name;
        }
    ]
}

如果你这样添加它,它确实意味着模型上调用toArray()的每个代码都会得到这个结果。如果您只希望ActiveController发生这种情况,您可能希望扩展YourFile模型并仅在那里包含fields()方法,因此您可以使用ActiveController配置{{1}}扩展版。

答案 1 :(得分:1)

我们还可以更改某些字段的显示名称:

for /f "delims=" %%a in (setting.txt) do echo %%a | find /i "compiler" && set %%a

echo Compiler value = %Compiler%

}

在此处查看完整教程: http://p2code.com/post/configuring-activecontroller-display-fields-yii-2-21