我有一个包含CSV字符串的属性的模型。Yii2:如何将属性中的CSV字符串映射到表单中的CheckboxList?
(该模型实际上是一个ActiveRecord的对象,但我想这并不重要。纠正我,如果我错了。)
/**
* @property string $colors Can be something like "red" or "red,green,blue" or ""
*/
class Product extends Model {
}
而且我有,我想这显示一种形式属性作为checkboxList,以便用户可以通过简单的点击来选择可能的值,而不是键入到textInput中。
从理论上讲,它应该与此类似:
<?php $availableColors = ['red' => 'Red', 'green' => 'Green', 'blue' => 'Blue']; ?>
<?php $form = ActiveForm::begin([]); ?>
<?= $form->field($model, 'colors')->checkboxList($availableColors) ?>
<?php ActiveForm::end(); ?>
但这显然是不行的,因为该领域colors
将需要一个数组。但在我的模型中,它是一个字符串。
什么是实现该目标的好方法?用JS或伪属性? colors
属性不能更改,因为它已经在不应该被修改的其他上下文中使用。
我知道爆炸。但还有更多的事情要做。 – robsch
您可以在模型中添加一个字段,您可以在其中输入数组形式的字符串“colors”的值,并且当用户执行提交时,可以根据从这些数组读取的值重建字符串。 – scaisEdge