Les vues
L’envoi d’informations au navigateur fait appel à des vues, chacune étant dédiée à un type d’informations (pages web, fichiers pdf, requêtes Ajax, fichiers binaires, etc.). Elles sont disponibles sous forme de services (décrits dans ppci/Config/Services.php), et sont physiquement stockées dans Ppci/Libraries/Views.
Toutes les vues héritent de la classe Ppci\Libraries\Views\DefaultView, qui comprend les fonctions génériques suivantes :
function set($value, $variable = ""): affecte un contenu (nommé ou non, si variable est renseigné) à la vuefunction get($variable = ""): récupère le contenu d’une variable ou le contenu affectéfunction encodehtml($data): fonction récursive d’encodage en HTML des variablesfunction send($param = ""): déclenche l’envoi des informations. Cette fonction est systématiquement réécrite dans chaque vue.
Affichage des pages
$view = service ("Smarty");
Les pages web sont générées avec le moteur de templates Smarty. Les modèles sont stockés :
- d’une part dans
Ppci/Views/templates/ppci, qui comprend toutes les pages gérées par Ppci, ainsi que la page par défaut (main.html) - d’autre part dans
App/Views/templates, pour les pages spécifiques de l’application.
Au moment du déclenchement de l’affichage, la classe va :
- encoder les variables en HTML, sauf celles qui sont référencées dans le tableau
$view->htmlVars - générer le jeton CSRF
- afficher les messages stockés dans la classe
Message - générer le menu de l’application
- rajouter divers contenus génériques, comme le titre de l’application.
function help()
La fonction help(_("adresse")) permet de générer un lien (avec une icone) qui ouvrira la page d’aide en ligne correspondant à l’adresse. Le radical de l’aide en ligne est déclaré dans la variable App->docroot.
Dans le modèle, il suffit d’insérer la variable {$help} pour que le lien soit inséré.
Envoi d’un fichier
$view = service ("FileView");
Le fonctionnement est assez semblable à BinaryView, à ceci près que cela ne travaille qu’à partir d’un fichier existant. le type MIME peut également être recherché automatiquement s’il n’est pas indiqué.
$param = array(
"filename" => "export.txt", /* nom du fichier tel qu'il apparaitra dans le navigateur */
"disposition" => "attachment", /* attachment : le fichier est telecharge, inline : le fichier est affiche */
"content_type" => "", /* type mime */
"tmp_name" => "", /* Name of the file to send */
);Requête Ajax
$view = service ("AjaxView");
Vue utilisée pour répondre à une requête Ajax. Le contenu, qui est fourni par défaut sous forme de tableau (contenu Json possible en positionnant la variable is_json à true), est encodé en html puis transformé en chaîne JSON avant d’être envoyé au navigateur.
Envoi d’un fichier CSV
$view = service ("CsvView");
Cette vue va permettre de générer un fichier CSV à partir d’un tableau ($data[][]). La génération et l’envoi du fichier est réalisé avec la fonction :
function send($filename = "", $delimiter = "")
Le nom du fichier peut être généré automatiquement. Le délimiteur peut être le point-virgule, la virgule ou la tabulation (indiquer ). La première ligne d’entête est générée à partir des clés du premier enregistrement du tableau.
Envoi d’un fichier JSON
$view = service ("JsonFileView");
La vue génère un fichier dans le navigateur, avec un fonctionnement proche de la vue Ajax. Si les données sont fournies à la classe sous forme de tableau, celles-ci sont encodées en html avant transformation en Json.
Envoi d’un fichier PDF
$view = service ("PdfView");
Transfert un fichier PDF, soit directement pour être affiché, soit en fichier attaché. Même fonctionnement que la vue FileView.
