[英]Yii2: model not loading array
我正在将以下(简单)代码用于要与yii2中的表单一起使用的模型:
class ChooseAgeCategoriesForm extends Model
{
public $ageCategories;
/**
* @return array the validation rules.
*/
public function rules()
{
return [
['ageCategories', 'safe'],
[['ageCategories'], 'each', 'rule' => ['integer']],
];
}
}
但是,然后尝试像这样加载模型:
$model = new ChooseAgeCategoriesForm();
if ($model->load(Yii::$app->request->post())) {
$acIDs = $model->ageCategories;
}
该代码永远不会执行。 实际上, $model->load
返回Bool(false)
但$model->errors
为空。 转储post
的内容会产生以下结果:
array(2) { ["_csrf"]=> string(56) "SzhjdWIuc0oIQSA0BEs4BDp8KzYEXwM5CG80RhNBRDkPUzIXO1gBew==" ["ageCategories"]=> array(9) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "3" [3]=> string(1) "4" [4]=> string(1) "5" [5]=> string(1) "6" [6]=> string(1) "7" [7]=> string(1) "9" [8]=> string(2) "10" } }
因此,是的,该字段实际上已发送并用数字数组填充。 我在这里看不到什么问题? 提前致谢。 我还尝试添加['ageCategories', 'exist', 'allowArray' => true],
作为另一条规则,但这也不起作用。 有任何想法吗?
表格代码
根据要求,表单本身的代码:
<?php $form = ActiveForm::begin([
'action' => Url::to(['/result/team-result']),
'method' => 'post',
'options' => ['id' => 'chooseAgeCategory', 'style' => "margin-bottom: 15px;"]
]); ?>
<?= Select2::widget([
'name' => 'ageCategories',
'id' => 'ac-id',
'value' => $acIDs,
'data' => ArrayHelper::map(AgeCategory::find()->all(), 'id', 'name'),
'options' => ['multiple' => true, 'placeholder' => Yii::t('view', 'Select Age Category')],
'pluginEvents' => [
"change" => "function() { this.form.submit(); }",
]
]) ?>
<?php $form->end(); ?>
我建议您使用带有model
属性的Select2
,以便将其自动链接到字段,以简化加载过程并使用模型的验证功能:
<?= Select2::widget([
'name' => 'ageCategories',
'id' => 'ac-id',
'value' => $acIDs,
'data' => ArrayHelper::map(AgeCategory::find()->all(), 'id', 'name'),
'options' => ['multiple' => true, 'placeholder' => Yii::t('view', 'Select Age Category')],
'pluginEvents' => [
"change" => "function() { this.form.submit(); }",
]
]) ?>
请更改您的select2小部件代码,如下所示。 Yii2包装模型名称与字段名称
ChooseAgeCategoriesForm [ageCategories]
如果您检查表格,就会知道。 因此,您必须在select2小部件中提供模型值。
<?= Select2::widget([
'model' => $model,
'attribute' => 'ageCategories',
'id' => 'ac-id',
'value' => $acIDs,
'data' => ArrayHelper::map(AgeCategory::find()->all(), 'id', 'name'),
'options' => ['multiple' => true, 'placeholder' => Yii::t('view', 'Select Age Category')],
'pluginEvents' => [
"change" => "function() { this.form.submit(); }",
]
]) ?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.