1

Children 字段是 mongoDB 中的一个数组:

<?= $form->field($model, 'children') ?>

我得到的错误是:

Array to string conversion

我需要以implode(',', $model->children)某种方式使用,如何在其中使用它ActiveForm?现在要做什么?

解决办法是什么?如何将该数组转换为字符串?

4

2 回答 2

3

在通话中使用时会显示该$model->children属性的内容。$form->field()如果属性的内容是一个数组,并且您希望/需要它是一个字符串,那么您必须在field()调用之前转换内容。

所以像这样,它可能会起作用。

<?php    
$model->children = implode(',', $model->children);
echo $form->field($model, 'children');
?>

不确定编辑这样的列表值(在文本字段中)是最好的方法。保存时您必须将字符串引爆。但是上面的代码是将数组转换为字符串的解决方案。

于 2015-07-03T11:44:51.287 回答
0

因为我想在每个小部件、网格视图中将其转换为字符串,所以我afterFind()在模型中使用函数将其转换为字符串。现在一切看起来都很棒:

public function afterFind() {
        parent::afterFind();
        if (is_array($this->children)) {
            $this->children = implode(',', $this->children);
        }
}
于 2015-07-03T13:51:55.393 回答