web-dev-qa-db-fra.com

Module XML avec champ SQL (JFormFieldSQL) - Champ de formulaire personnalisé - Vérifier si la table existe

Mon module utilise le champ SQL (JFormFieldSQL) pour quelques requêtes simples dans la base de données pour un composant tiers. Mon souci est que si les tables sont manquantes, l'ouverture du module dans l'admin "plantera" le back-end, à cause de l'erreur dans le mysql (ne trouvant pas la table).

Y a-t-il de toute façon un module dans le backend vérifiant si la table existe dans la base de données et, dans le cas contraire, envoie une notification indiquant que la table nécessaire est manquante et ne continue pas le chargement du fichier XML?

3
FFrewin

Votre inquiétude est justifiée. En effet, s’il ya une erreur SQL, le backend du module va planter.

Si cela est indispensable pour vous, je voudrais étendre le JFormFieldSQL avec une implémentation personnalisée permettant de vérifier les erreurs SQL ou de vérifier MYSQL comme SHOW TABLES LIKE 'mycomponenttable'

Voir Comment créer un type de champ de formulaire personnalisé dans un module?

3
Valentin Despa

Vous pouvez simplement vérifier si l'extension est activée en haut du module mod _..... php pour empêcher tout traitement ultérieur:

// Check for component
if (!JComponentHelper::getComponent('com_....', true)->enabled)
{
....
    return;
}
1
Anibal