Las vistas HTML
FacturaScripts utiliza el motor de plantillas Twig, un potente sistema que permite el uso de bloques, macros, funciones, extensiones y herencia entre plantillas. Los archivos de las vistas HTML deben tener la extensión .html.twig y se deben almacenar en la carpeta View del plugin correspondiente.
Ejemplo de Plantilla: MyNewView.html.twig
Este es un ejemplo básico de plantilla HTML:
{% extends "Master/MenuTemplate.html.twig" %}
{% block body %}
{{ parent() }}
<h1>Hola mundo</h1>
{% endblock %}
{% block css %}
{{ parent() }}
{% endblock %}
{% block javascripts %}
{{ parent() }}
{% endblock %}
Esta vista hereda del archivo Master/MenuTemplate.html.twig
, una plantilla de FacturaScripts que incluye el menú superior. Si prefieres no incluir el menú, puedes heredar de Master/MicroTemplate.html.twig
para una interfaz más minimalista.
Selección de Vistas desde el Controlador
Para seleccionar una vista diferente desde el controlador, simplemente llama a la función setTemplate()
especificando el nombre de la vista, sin la extensión:
$this->setTemplate('MyNewView'); // Esto selecciona View/MyNewView.html.twig
Si prefieres desactivar la salida HTML, puedes pasar el valor false
a setTemplate()
:
$this->setTemplate('false'); // Desactiva la salida HTML
Variables Disponibles en la Vista
- assetManager: Acceder al JavaScript o CSS cargado desde el controlador.
- controllerName: Nombre del controlador ejecutado.
- fsc: Referencia al controlador en ejecución, permitiendo el acceso a todas sus propiedades y métodos públicos.
- log: Instancia del MiniLog.
- template: Nombre de la plantilla cargada actualmente.
Para pasar una variable desde el controlador a la vista, simplemente defínela como pública en el controlador y accede a ella desde la vista:
{{ fsc.mi_variable }}
Obtener URLs desde la Vista
- Para obtener la URL de la página actual, puedes utilizar la función
url()
proporcionada por el controlador:
{{ fsc.url() }}
- Para obtener la URL de un controlador específico, usa la función
asset()
:
{{ asset('ListFacturaCliente') }}
Acceso al Nombre del Usuario
Para obtener el nombre del usuario actual:
{{ fsc.user.nick }}
Trasladar Texto Traducido
Usa trans()
para presentar texto traducido basado en el idioma del usuario:
{{ trans('save') }}
Para incluir parámetros en la traducción:
{{ trans('save', {'code':'FAC1578'}) }}
Para traducir a un idioma específico:
{{ trans('save', {}, 'de_DE') }}
Gestión de Archivos de la Biblioteca
Obten un objeto archivo con su path usando su ID desde la biblioteca:
{% set file = attachedFile(5) %}
{{ file.path }}
Inserción de Tokens en Formularios
Obtén el input con el token necesario para formularios:
{{ formToken() }}
Para obtener sólo el token:
{{ formToken(false) }}
Formateo Avanzado de Números
Para formatear números de acuerdo con los decimales configurados:
{{ number(20.338547) }}
O especifica los decimales manualmente:
{{ number(20.338547, 4) }}
Formateo de Precios con Divisa
Formatea números como precios, usando la divisa por defecto del sistema:
{{ money(15.42) }}
Especifica una divisa personalizada:
{{ money(15.42, 'EUR') }}
Acceso a Parámetros de Configuración
Para obtener configuraciones específicas guardadas:
{% set divisa = settings('default', 'coddivisa') %}
{% set decimales = settings('default', 'decimals') %}
Incluye un valor por defecto si no se encuentra el dato:
{% set dias = settings('default', 'dias', 7) %}
Añadir Funciones Personalizadas
Puedes ampliar la clase Html
añadiendo funciones desde tu plugin para utilizarlas en cualquier vista Twig. Aquí un ejemplo para añadir una función que devuelve la fecha actual en un formato especificado:
<?php
namespace FacturaScripts\Plugins\MiPlugin;
use FacturaScripts\Core\Html;
use FacturaScripts\Core\Base\InitClass;
use Twig\TwigFunction;
class Init extends InitClass
{
public function init()
{
Html::addFunction(new TwigFunction('fecha', function (string $format = 'Y-m-d H:i:s') {
return date($format);
}));
}
}
Modo de uso en la plantilla twig:
{{ fecha() }}
{{ fecha('d-m-Y') }}
Mensajes con setToast
de JavaScript
Para mostrar animaciones de log, incluye la vista Toasts
y usa:
{% include 'Macro/Toasts.html.twig' %}
<script>
setToast('tu mensaje aquí', 'warning', 'tu título aquí', 10000);
</script>
Documentación Oficial de Twig
Consulta la documentación completa de Twig en twig.symfony.com.