J'essaie d'utiliser la nouvelle fonctionnalité de sous-formulaire pour implémenter des formulaires imbriqués. Cela augmente considérablement la lisibilité pour les développeurs et je pensais que c'était déjà possible mais après les tests, je n'en suis plus si sûr. J'ai donc essayé et constaté que, même si les formulaires imbriqués sont affichés, les valeurs ne sont pas enregistrées. Voici les codes qui sont liés.
mod_something.xml (répétable)
<field name="levelone" type="subform"
formsource="/modules/mod_something/models/forms/levelone.xml"
min="1"
max="9999999999"
multiple="true"
layout="joomla.form.field.subform.repeatable"
groupByFieldset="false"
buttons=""
label="Level 1"
description="" />
levelone.xml
<field name="leveltwo" type="subform"
formsource="/modules/mod_something/models/forms/leveltwo.xml"
min="1"
max="9999999999"
multiple="false"
layout="joomla.form.field.subform.default"
groupByFieldset="false"
buttons=""
label="Level 2"
description="" />
leveltwo.xml
<?xml version="1.0" encoding="UTF-8"?>
<form>
<field
name="test"
type="text"
default=""
label="Test"
size="10"
/>
</form>
Maintenant, cela semble un peu étrange, mais ceci est simplement construit dans le but de créer un futur modèle à utiliser.
Donc, comme je l'ai dit, le nom du champ test
apparaît bien mais il ne sauvegarde pas l'entrée. Quand je déplace ce champ vers le levelone.xml
_ (donc un niveau plus élevé), cela permet d’économiser.
Espérons que tout le monde sache comment le sauver.
Merci à tous pour votre aide!
Jusqu'à présent, cela n'est pas encore possible dans Joomla. Des sous-formulaires imbriqués ou, en d'autres termes, des sous-formulaires multi-niveaux sont à l'ordre du jour. J'espère qu'un bon volontaire est prêt à s'attaquer à ce problème.
Plus d'informations peuvent être trouvées ici: https://github.com/joomla/joomla-cms/issues/11551
En attendant, la seule solution possible consiste à ajouter votre propre javascript, à copier les valeurs de chaque champ d'entrée/sélection ajouté aux niveaux profonds et à les sauvegarder au niveau de base. Bien qu'en théorie, cela fonctionnerait dans la réalité, ce sera un enfer à gérer.