我在 Yii2 中使用ActiveController
. actionIndex
返回所有模型的默认实现。我想要做的是在发送响应之前更改一个属性的值。例如,我上传了图像,其名称仅存储在数据库中。在发送响应之前,我想嵌入带有图像名称的基本 URL。我需要覆盖整个索引方法还是可以操作action
方法中的单个属性?
问问题
1058 次
2 回答
3
我认为最简单的方法是覆盖fields()
模型中的方法。假设您为名为YourFile
. 如果将以下函数添加到YourFile
模型中,则可以为响应中的每个模型添加完整的 url:
public function fields() {
return [
'id',
'name' => function() {
return Url::base(true) . $this->name;
}
]
}
如果你像这样添加它,它确实意味着调用toArray()
你的模型的每个代码都会得到这个结果。如果您只希望它发生在ActiveController
您可能想要扩展YourFile
模型并fields()
仅在其中包含该方法的情况下,那么您可以ActiveController
使用扩展版本来配置。
于 2016-06-23T06:23:39.707 回答
1
我们还可以更改某些字段的显示名称:
class User extends \yii\db\ActiveRecord implements \yii\web\IdentityInterface {
/** * API safe fields */
public function fields() {
return [
'id',
'email_address' => 'email',
'first_name',
'last_name',
'full_name' => function($model) {
return $model->getFullName();
},
'updated_at',
'created_at'
];
}
}
在此处查看完整教程:http: //p2code.com/post/configuring-activecontroller-display-fields-yii-2-21
于 2016-10-27T13:10:13.540 回答