我正在使用常见的Yii2 ActiveController
REST实现:
class ResultController extends ActiveController
{
public $modelClass = 'app\models\Result';
public function actionResultList($id)
{
/* @var $modelClass \yii\db\BaseActiveRecord */
$modelClass = $this->modelClass;
return new ActiveDataProvider...
它对我有好处,除了一个功能 - 我已经将Result->rawJson
模型中存储的一些JSON作为字符串。当我通过这个控制器输出它时,它会被斜杠转义,前端的角度将它视为一个字符串。问题是如何告诉序列化程序不要序列化多个模型字段并按原样传递它们。
我发现只有这种肮脏的黑客才能做到这一点,我在我的模型类中添加了afterFind
:
public function afterFind()
{
$this->rawJson= json_decode($this->rawJson);
}
我提前感谢您对此的任何帮助。
答案 0 :(得分:1)
我建议您保持原始属性不变,并使用getter-setter对创建一个新属性。假设您的原始属性名为rawJson
:
public function getProcessedJson()
{
return json_decode($this->rawJson);
}
public function setProcessedJson($value)
{
$this->rawJson = json_encode($value);
}
然后只需将processedJson
添加到您的fields()
方法中,就可以了。