13.4.4 Application::addCssRef

Ajouter un lien vers une feuille de style CSS à un template.

13.4.4.1 Description

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

Permet d'ajouter un lien vers une feuille de style CSS qui sera insérée dans les éléments [CSS:REF] des templates utilisées lors du rendu d'une vue.

13.4.4.2 Avertissements

N/A

13.4.4.3 Liste des paramètres

(string) ref

La référence à la feuille de style CSS. La référence peut être :

si needparse est faux :

  • un chemin d'accès relatif au contexte Dynacase (ex. MY_APP/Layout/my_css.css, lib/my/my_css.css),
  • un chemin d'accès relatif au répertoire Layout du style actuellement appliqué,
  • une URL (ex. http://www.example.net/my_css.css).

si needparse est vrai :

  • un chemin d'accès relatif au répertoire Layout de l'application courante ou d'une application particulière (ex. MY_APP:my_css.css),
(bool) needparse

Permet d'indiquer si le contenu de la feuille de style doit être interprété comme un template.

Seuls les fichiers référencés comme template peuvent être parsés. La notation APP:file.css indique que le modèle à parser sera APP/Layout/file.css.

(string) packName
Les feuilles de style peuvent être concaténées afin de réduire le nombre de fichiers chargés par le client. Dans ce cas, toutes les feuilles de style ajoutées avec un même identifiant packName seront concaténées pour ne donner qu'un seul fichier à charger. Des packName différents peuvent être utilisés pour faire des groupes de feuilles de style qui seront servis chacun dans un fichier unique et distinct par packName.

13.4.4.4 Valeur de Retour

La méthode retourne une chaîne de caractères non vide avec l'emplacement de la feuille de style CSS ajoutée, ou une chaîne de caractères vide si l'emplacement de la feuille de style n'est pas valide.

13.4.4.5 Erreurs / Exceptions

N/A

13.4.4.6 Historique

N/A

13.4.4.7 Exemples

13.4.4.7.1 Exemple simple

Feuille de style CSS MY_APP/Layout/mycss.css :

.question {
    color: blue;
}

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->addCssRef('MY_APP/Layout/my.css');
}

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>
    [CSS:CUSTOMREF]
  </head>
  <body>
    <h1 class="question">What is your favourite colour?</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>
    <link rel="stylesheet" type="text/css" href="MY_APP/Layout/my.css?wv=3220">
  </head>
  <body>
    <h1 class="question">What is your favourite colour?</h1>
  </body>
</html>

L'url composée dans le fichier contient une clef identifiant une version du système. Le fichier css permet d'être mis en cache par le navigateur jusqu'à que cette clef soit modifiée. Cette clef est modifiée à chaque modification de module (installation ou mise à jour).

13.4.4.7.2 Exemple parse

Feuille de style CSS MY_APP/Layout/myParsecss.css :

.question {
    [IF ISIE7]color: [COLOR_A5];[ENDIF ISIE7]
    [IFNOT ISIE7]color: [COLOR_B5];[ENDIF ISIE7]
}

Les clefs entres crochets sont des paramètres globaux de l'application. Elles seront remplacées sur le serveur lors de la demande du fichier css.

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->addCssRef('MY_APP:my.css', true);
}

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>
    [CSS:CUSTOMREF]
  </head>
  <body>
    <h1 class="question">What is your favourite colour?</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>
    <link rel="stylesheet" type="text/css" 
          href="?app=CORE&amp;action=CORE_CSS&amp;ukey=6149df19b262da225264b7e96b0498c2&amp;layout=MY_APP:my.css.css&amp;type=css">
  </head>
  <body>
    <h1 class="question">What is your favourite colour?</h1>
  </body>
</html>

L'url composée dans le fichier contient une clef propre à l'utilisateur et à sa session. Le fichier css est de nouveau téléchargé à chaque changement de session.

13.4.4.7.3 Exemple Pack

Feuille de style CSS MY_APP/Layout/css_1.css :

.question {
    color: blue;
}

Feuille de style CSS MY_APP/Layout/css_2.css :

.question {
    voice-family: Bridgekeeper, male;
}

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->addCssRef('MY_APP/Layout/css_1.css', false, 'my_css');
    $application->addCssRef('MY_APP:css_2.css', false, 'my_css');
}

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>
    [CSS:CUSTOMREF]
  </head>
  <body>
    <h1 class="question">What is your favourite colour?</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>
    <link rel="stylesheet" type="text/css" href="pack.php?type=css&pack=my_css&wv=4253" />
  </head>
  <body>
    <h1 class="question">What is your favourite colour?</h1>
  </body>
</html>

13.4.4.8 Notes

  • Les feuilles de style ajoutées via cette méthode seront servies 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.4.9 Voir aussi

×