【发布时间】:2019-08-07 22:46:21
【问题描述】:
我有 ActiveRecord 模型和该模型的更新形式的视图。我在模型类中也有 getter 和 setter,看起来像这样
public function setTopvisorGoogleRegion($value)
{
$this->myvalue = $value;
return(true);
}
public function getTopvisorGoogleRegion()
{
return([1 => '123']); //I return this array for show you essence of the problem
}
此代码中的以下逻辑 $model->topvisorgoogleregion 必须返回 [1 => '123']
鉴于我有下一个代码
<?php echo($form->field($model, topvisorgoogleregion)->textInput());?>
<?php echo $form->field($model, 'topvisorgoogleregion')->widget(Select2::classname(), [
'data' => [1 => '123', 2 => '456'],
'options' => [
'id'=>'projectCtrl',
'placeholder' => 'Select option',
'multiple' => true
],
'pluginOptions' => [
'allowClear' => true,
'tags' => true,
],
]);
?>
当我打开表单时,我希望看到选项 1 => 已在 Select2 中选择了“123”。这在逻辑上是因为当已经存在的记录正在更新时,ActiveRecord 获取已经存储在模型中的数据(在这种情况下使用 getter)并用这些数据填充视图中的字段(在使用 textInput 的第一个字段中,我看到文本“数组”,因为模型中的 getter返回数组)。但是当我打开更新页面时 Select2 是空的。怎么了?
如果我删除第一个字段 (textInput) 没有任何变化
【问题讨论】:
-
不确定你在做什么你正在将一个 assoc 数组传递给
field函数的attribute名称参数? -
尝试从 getter 返回一个标量值(即
return 1;而不是return [1 => '123'];) -
不,我不尝试将它传递给属性名称参数。我希望在 select2 中加载页面时显示默认选择的“123”元素。 P.S:你是对的,我发现错字了,当我把它复制到 stackoverflow 时,我在第二个代码片段的第一个字符串中丢失了引号,但是我看到的引号是一样的
-
xtx,我尝试返回标量值,不影响
标签: php activerecord yii2 widget