web-dev-qa-db-fra.com

Traitement des données de type de champ personnalisé de plug-in

J'ai écrit un type de champ personnalisé qui permettra aux utilisateurs de télécharger un fichier (CSV). Lors de la soumission du fichier, le plug-in doit pouvoir le lire, puis faire sa propre chose (mettre à jour les valeurs de la base de données).

Il ne semble pas y avoir de code appelé à la fin de Joomla pour les types de champs personnalisés, cependant. J'ai vu des composants faire des choses similaires à ce que je fais, mais les composants ont beaucoup plus de contrôle sur le backend. Puis-je accéder aux paramètres globaux $ _POST/$ _ FILES une fois que l'utilisateur a téléchargé un fichier via des types de champs personnalisés?

Pour clarifier, mon problème ne permet pas à l'utilisateur de télécharger le fichier. C'est pouvoir y accéder (aucun code n'est appelé après que l'utilisateur ait cliqué sur sauvegarder). J'ai essayé de créer mon propre formulaire sur le terrain, mais cela ne fonctionne pas.

La documentation de Joomla pour ce genre de choses fait cruellement défaut et toute aide serait la bienvenue.

3
Joseph Boyle

Après réflexion, j’ai trouvé une solution de contournement assez grossière.

L'utilisateur doit télécharger un fichier sur Joomla, puis un champ est utilisé pour sélectionner le fichier. C'était assez facile et simple. Le seul inconvénient est que vous devez vérifier son contenu à chaque exécution du plugin.

Une solution simple consiste à vérifier le fichier uniquement lorsque les paramètres sont mis à jour: Un paramètre masqué (type de champ personnalisé) est défini sur l'horodatage de l'unité actuelle, qui est ensuite enregistré chaque fois que les paramètres du plug-in sont enregistrés. Le plugin stocke dans son cache la dernière fois qu'il a vidé le cache. Lors du chargement, il vérifie si la valeur en cache est inférieure à la valeur du paramètre. Si tel est le cas, le système videra son cache et poursuivra ses activités.

Cela peut être étendu pour faire beaucoup plus de choses pour lesquelles les extensions sont laissées dans le noir (par exemple: chaque fois que les paramètres changent).

1
Joseph Boyle