我在如下的foreach循环中有一个相同的字段
foreach ( $subCategoryData as $k => $val) {
<?= $form->field($model, 'sub_category', ['template' => '{input}'])->textInput(['maxlength' => 255, 'class' => 'form-control required section_name', 'name' => "Category[sub_category][$k][name]"]) ?>
} ?>
我使用自定义方法进行了ajax验证,效果很好。
但这仅适用于第一个输入。因为它具有相同的ID。
但是,当我'inputOptions' => ['id' => 'myCustomId']
使用以下命令对其进行更改并使其唯一时,不调用我的ajax验证。
foreach ( $subCategoryData as $k => $val) {
<?= $form->field($model, 'sub_category', ['template' => '{input}','inputOptions' => ['id' => "category-sub_category_".$k]])->textInput(['maxlength' => 255, 'class' => 'form-control required section_name', 'name' => "Category[sub_category][$k][name]"]) ?>
}
我在这里看到了这个解决方案https://github.com/yiisoft/yii2/issues/7627
并且也看到了这个https://stackoverflow.com/a/28460442/2286537
但是没有任何工作可以帮助我吗?
您的问题与您介绍的帖子不同。您应该使用loadMultiple。
例:
if (\Yii::$app->request->isAjax) {
if (\yii\base\Model::loadMultiple($model,\Yii::$app->request->post())) {
\Yii::$app->response->format = Response::FORMAT_JSON;
echo json_encode(ActiveForm::validateMultiple($model));
\Yii::$app->end();
}
}
if ( \yii\base\Model::loadMultiple($model, Yii::$app->request->post()) && \yii\base\Model::validateMultiple($model)) {
foreach ($model as $models) {
$models->save(false);
}
鉴于:
<?php $form = ActiveForm::begin([
'enableAjaxValidation' => true,
]);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句