5 votes

Validation Ajax avec id personnalisé dans yii2

J'ai un même champ dans la boucle foreach comme ci-dessous

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]"]) ?>
} ?>

J'ai une validation ajax avec une méthode personnalisée qui fonctionne bien.

Mais il fonctionne uniquement avec la première entrée. Parce qu'elle a le même ID.

Mais quand je l'ai changé avec 'inputOptions' => ['id' => 'myCustomId'] et le rendre unique avec ci-dessous et ma validation ajax n'est pas appelée.

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]"]) ?>
}

J'ai vu cette solution ici https://github.com/yiisoft/yii2/issues/7627

et aussi vu ceci https://stackoverflow.com/a/28460442/2286537

Mais rien ne fonctionne Quelqu'un peut-il m'aider ?

2voto

edopro Points 357

Votre question est différente des posts que vous avez introduits. Vous devriez utiliser loadMultiple.

Exemple :

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);
      }

en vue :

<?php $form = ActiveForm::begin([
      'enableAjaxValidation' => true,
   ]);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X