Intégrateur certifié et Développeur TYPO3

Les autres blogs

Typoscript : récupérer n'importe quelle information en base

Description

Cette méthode permet de récupérer n'importe quelle donnée dans la base TYPO3 à partir d'un objet simple typoscript.

Pour cela, les seuls informations nécessaires sont :

  • Le nom de la table dans laquelle je cherche ma donnée;
  • L'uid correspondant à ma donnée;
  • champ de la table dans lequel se trouve ma donnée.

TypoScript

# Utilisation du data : DB:nom_table:uid:nom_champ

10 = TEXT
10.data = DB:fe_users:9:username
# Affiche le username du FEuser dont l'uid est 9

Powermail : Email du destinataire dynamique en fonction d'un champ

Il est également possible de récupérer une donnée à partir d'un ou plusieurs éléments dynamiques (comme le nom de la table ou l'uid de l'enregistrement)

Prenons un exemple concret: j'utilise l'extension Powermail pour générer mes formulaires et je souhaite que l'email du destinataire soit dynamique en fonction d'un champ select que j'appelle "Service".

Première étape

Déclarer un objet TypoScript dans le champ "Courriel du destinataire" de mon plugin Powermail, comme ceci :

Configuration du contenu powermail

{f:cObject(typoscriptObjectPath:'lib.destinataire')}

Deuxième étape

Créer des enregistrements permettant de stocker les adresses email des différents destinataires dans la base de donnée de TYPO3. J'utilise pour cela des enregistrements tt_address :

Trosième étape

Il faut maintenant configurer le champ "Service" du formulaire Powermail. Pour cela, le sélecteur a besoin de deux informations :

  • Un label (par exemple : John Snow);
  • Une valeur ( L'uid de l'enregistrement tt_address "John Snow").

N'oubliez pas de renseigner l'identifiant du champ lorsque vous créez le champ Select dans le formulaire (si c'est nécessaire, il faut le renseigner vous-même) : c'est important pour l'étape suivante !

Quatrième et dernière étape

Configurer l'objet TypoScript permettant de récupérer dynamiquement l'email du destinataire en fonction de la sélection de l'utilisateur dans son formulaire.

TypoScript

# Récupération dynamique du destinataire
lib.destinataire = TEXT
lib.destinataire {
    # Ici, "service" est l'identifiant du champ select dans le formulaire powermail
    dataWrap = DB:tt_address:{GP:tx_powermail_pi1|field|service}:email
    # Obligé d'utiliser 2 wraps pour interpréter correctement les données dynamiques
    wrap3 = {|}
    insertData = 1
}

Voilà, le tour est joué :)

J'espère que vous aurez trouvé cet article utile. N'hésitez pas à poster un commentaire si vous voulez faire partager vos expériences !

Commentaires

commentaires générés par Disqus