web-dev-qa-db-fra.com

Comment définir la validation du formulaire uniquement pour les champs affichés

Du côté de l'administration, j'ai un formulaire XML avec 2 champs comme ci-dessous. Les deux champs sont marqués comme required=true

<field name="field1"
  type="text"
  label="Field1"
  required="true"/>

<field name="field2"
  type="text"
  label="Field2"
  required="true"/>

Dans le formulaire admin (default.php), les champs sont semés comme ci-dessous. field2 n'est requis que sous certaines conditions.

echo $this->form->renderField('field1');
if (condition){
  echo $this->form->renderField('field2');
}

Lorsque ce formulaire est soumis, la validation côté serveur valide les deux champs indépendamment de ce qui est affiché sur le formulaire. Je veux configurer de manière à ce que la validation ne valide que le contenu du formulaire.

1
Malaiselvan

J'ai réussi à atteindre cet objectif via setFieldAttribute. Dans le formulaire XML, j'ai supprimé le field2 propriété requise et définissez-la de manière dynamique sous la forme ci-dessous.

echo $this->form->renderField('field1');
if (condition){
  $this->form->setFieldAttribute('field2','required','required');
  echo $this->form->renderField('field2');
}

Pas sûr que ce soit la bonne approche mais cela fonctionne très bien ...

2
Malaiselvan