Plantillas

Resumen

Esta página explica el sistema de plantillas de las apps: cómo acceder a los parámetros del controlador, imprimir valores de forma segura frente a XSS e incluir otras plantillas, CSS, JavaScript e imágenes. Está dirigida a quienes desarrollan apps.

Fuente: documentación de Nextcloud, «developer_manual/basics/front-end/templates», versión 3ad9158, licencia CC BY 3.0; traducida y adaptada para APS Conecta Gestión.

APS Conecta Gestión ofrece su propio sistema de plantillas, que básicamente es PHP plano con algunas funciones adicionales y variables predefinidas. Todos los parámetros que se han pasado desde el controlador están disponibles en un array llamado $_[], p. ej.:

array('key' => 'something')

se puede acceder mediante:

$_['key']

Nota

Para prevenir XSS, las siguientes funciones de PHP para imprimir están prohibidas: echo, print() y <?=. En su lugar, se usa la función p() para imprimir los valores. Si se necesita imprimir sin escapar, hay que revisar dos veces que no haya XSS y usar: print_unescaped().

Los valores se imprimen con la función p(), y el HTML se imprime con print_unescaped().

templates/main.php

<?php foreach($_['entries'] as $entry){ ?>
  <p><?php p($entry); ?></p>
<?php
}

Incluir plantillas

Las plantillas también pueden incluir otras plantillas mediante el método $this->inc('templateName').

<?php print_unescaped($this->inc('sub.inc')); ?>

Las variables de la plantilla padre también estarán disponibles en las plantillas incluidas, pero, si se necesita, también se le pueden pasar variables nuevas mediante el segundo parámetro opcional de $this->inc, en forma de array.

templates/sub.inc.php

<div>I am included, but I can still access the parents variables!</div>
<?php p($_['name']); ?>

<?php print_unescaped($this->inc('other_template', array('variable' => 'value'))); ?>

Incluir CSS y JavaScript

Advertencia

Esto está obsoleto; en su lugar, hay que usar addScript y addStyle en el controlador. Consultar JavaScript para más información.

Para incluir CSS o JavaScript se usan las funciones style y script:

<?php
script('myapp', 'script');  // add js/script.js
style('myapp', 'style');  // add css/style.css

Incluir imágenes

Para generar enlaces a imágenes se usa la función image_path:

<img src="<?php print_unescaped(image_path('myapp', 'app.png')); ?>" />