web-dev-qa-db-fra.com

Comment afficher et enregistrer un formulaire à partir d'un module, comme nous le faisons dans les composants?

J'affiche et enregistre des formulaires dans des composants Joomla MVC à l'aide de classes jmodeladmin.

Mais comment puis-je faire la même chose à partir d'un module? Comme les modules ne font pas les choses à la manière de MVC, ils peuvent automatiquement trouver la vue, le modèle et le contrôleur correspondants.

Donc, je suppose que je voudrais afficher une forme donnant la suite de ce qui est mentionné dans ce post Comment obtenir la forme du composant à partir du module? mais quand le bouton de soumission du formulaire est cliqué dans le module concerné, comment puis-je récupérer la soumission et la sauvegarder en utilisant jmodeladmin classes ??

5
dev-m

Je pense que vous devez capturer la sortie de votre module en utilisant un composant. Vous pouvez utiliser JForm pour sortir le formulaire dans votre module, puis avoir des entrées cachées comme

<form action="index.php" method="POST" name="yourform">
<input type="hidden" value="com_yourcomponent" name="option"/>
<input type="hidden" value="yourview" name="view"/>
<input type="hidden" value="savesomething" name="task"/>
<!-- ...and other input-fields with your actual form input -->
</form>

alors vous pouvez utiliser toutes les méthodes habituelles pour gérer la saisie de formulaire ...

4
jonasfh

Vous avez raison, la soumission avec un module est un peu plus difficile car les formulaires soumis doivent aller à une URL. Il est plus compliqué d'écrire un composant uniquement pour accepter les entrées du module.

En raison de ce problème, dans Joomla 3, Matt Thomas a écrit un composant appelé com_ajax. Com_Ajax est un composant conçu pour aider les modules à utiliser des modules lorsqu'il ne dispose d'aucune URL spécifique à utiliser, contrairement à ce que vous avez dans un composant.

Votre cas à moi est exactement ce que com_ajax a été conçu pour aider à traiter. Voici de la documentation sur son utilisation:

http://docs.joomla.org/Using_Joomla_Ajax_Interface

Ce que vous allez finir avec votre module, c'est écrire un script qui sera exécuté via l'URL de soumission. Je pense que vous voudrez utiliser du javascript pour vous aider à soumettre le formulaire mais je ne suis pas sûr que ce soit absolument nécessaire (mais c'est plus sexy).

Ensuite, dans votre aide, vous allez configurer la classe pour le module:

https://github.com/Joomla-Ajax-Interface/Ajax-Session-Module/blob/master/helper.php#L12

Vous allez configurer avec la méthode getAjax (): https://github.com/Joomla-Ajax-Interface/Ajax-Session-Module/blob/master/helper.php#L12

Pour gérer l'extraction du formulaire, envoyez des données via JFactory :: getApplication () -> input ()

Vous renverrez alors une sorte de réponse, probablement une chaîne JSON qui est un message de réussite ou d'erreur.

Espérons que cela aide!

3
Chad Windnagle