如何内爆数组以在 yii2 ActiveForm 的文本框中显示它?
How to implode an array to show it in a textbox in yii2 ActiveForm?
子字段是mongoDB中的一个数组:
<?= $form->field($model, 'children') ?>
我得到的错误是:
Array to string conversion
我需要以某种方式使用implode(',', $model->children)
,如何在ActiveForm
中使用它?现在要做什么?
解决方法是什么?如何将该数组转换为字符串?
$model->children
属性的内容在 $form->field()
调用中使用时显示。如果属性的内容是一个数组,而你 want/need 它是一个字符串,你必须在 field()
调用之前转换内容。
所以像这样,它可能会起作用。
<?php
$model->children = implode(',', $model->children);
echo $form->field($model, 'children');
?>
不确定像这样(在文本字段中)编辑列表值是最好的方法。保存时你必须将字符串分解回来。但是上面的代码是将那个数组变成字符串的解决方案。
因为我想在每个小部件、网格视图中将其转换为字符串,所以我在模型中使用了 afterFind()
函数以将其转换为字符串。现在一切看起来都很棒:
public function afterFind() {
parent::afterFind();
if (is_array($this->children)) {
$this->children = implode(',', $this->children);
}
}
子字段是mongoDB中的一个数组:
<?= $form->field($model, 'children') ?>
我得到的错误是:
Array to string conversion
我需要以某种方式使用implode(',', $model->children)
,如何在ActiveForm
中使用它?现在要做什么?
解决方法是什么?如何将该数组转换为字符串?
$model->children
属性的内容在 $form->field()
调用中使用时显示。如果属性的内容是一个数组,而你 want/need 它是一个字符串,你必须在 field()
调用之前转换内容。
所以像这样,它可能会起作用。
<?php
$model->children = implode(',', $model->children);
echo $form->field($model, 'children');
?>
不确定像这样(在文本字段中)编辑列表值是最好的方法。保存时你必须将字符串分解回来。但是上面的代码是将那个数组变成字符串的解决方案。
因为我想在每个小部件、网格视图中将其转换为字符串,所以我在模型中使用了 afterFind()
函数以将其转换为字符串。现在一切看起来都很棒:
public function afterFind() {
parent::afterFind();
if (is_array($this->children)) {
$this->children = implode(',', $this->children);
}
}