13.4.6 Application::addJsRef

Ajouter un lien vers un script Javascript à un template.

13.4.6.1 Description

string addJsRef ( string $ref [, bool $needparse = false [, string packName = '']] )

Permet d'ajouter un lien vers un script JavaScript qui sera inséré dans les éléments [JS:REF] des templates utilisées lors du rendu d'une vue.

13.4.6.2 Avertissements

N/A

13.4.6.3 Liste des paramètres

(string) ref
La référence au script JavaScript. La référence peut être : un chemin d'accès relatif au contexte Dynacase (ex. MY_APP/Layout/my_script.js, my_script.js), un chemin d'accès relatif au répertoire Layout du style actuellement appliqué, un chemin d'accès relatif au répertoire Layout de l'application courante ou d'une application particulière (ex. MY_APP:my_script.js), une URL (ex. http://www.example.net/my_script.js).
(bool) needparse
Permet d'indiquer si le contenu du script doit être interprété comme un template.
(string) packName
Les scripts peuvent être concaténés afin de réduire le nombre de fichiers chargés par le client. Dans ce cas, tous les scripts ajoutés avec un même identifiant packName seront concaténés pour ne donner qu'un seul fichier à charger. Des packName différents peuvent être utilisés pour faire des scripts qui seront servis chacun dans un fichier unique et distinct par packName.

13.4.6.4 Valeur de Retour

La méthode retourne une chaîne de caractère non vide avec l'emplacement du script JavaScript ajouté, ou une chaîne de caractère vide si l'emplacement du script n'est pas valide.

13.4.6.5 Erreurs / Exceptions

N/A

13.4.6.6 Historique

N/A

13.4.6.7 Exemples

  • Exemple #1

Script JavaScript MY_APP/Layout/js_1.js :

alert('This is JS#1');

Script JavaScript MY_APP/Layout/js_2.js :

alert('This is JS#2');

Contrôleur de l'action MY_ACTION (my_action.php) de l'application MY_APP :

function my_action(Action &$action) {
    /* Get the Application of the current Action */
    $application = $action->parent;
 
    $application->addJsRef('MY_APP/Layout/js_1.js', false, 'my_js');
    $application->addJsRef('MY_APP:js_2.js', false, 'my_js');
}

Vue de l'action MY_ACTION (Layout/my_action.xml) :

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>My Action</title>
  </head>
  <body>
    [JS:REF]
    <h1>Have you seen any alert lately?</h1>
  </body>
</html>

Résultat du rendu de la vue de l'action :

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>My Action</title>
  </head>
  <body>
    <script type="text/javascript" language="JavaScript" src="pack.php?type=js&pack=my_js&wv=4253" /></script>
    <h1>Have you seen any alert lately?</h1>
  </body>
</html>

13.4.6.8 Notes

  • Les scripts ajoutées via cette méthode seront servis avec une directive indiquant au client de mettre en cache le résultat obtenu et minimiser ainsi les requêtes au serveur.
  • L'expiration de la mise en cache est gérée via un argument wv=<version> dont le numéro de version est incrémenté à chaque mise à jour d'un module.
  • Les packName sont composés par utilisateur et sont mis en cache sur le navigateur de l'utilisateur : ils ne sont donc pas partagés et/ou mis en cache sur le serveur.

13.4.6.9 Voir aussi

×