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.
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 ...