Search by

mpjensen / twig-template

mpjensen

There is no license information available for the latest version (0.1.0) of this package.

Fælles Twig-kontroller til MPJSoft-applikationer

0.1.0 2026-11-12 11:54 UTC

This package is not auto-updated.

Last update: 2026-11-13 09:18:31 UTC


README

Composer-bibliotek til Salsa, Tango, Quickstep og Waltz. Polka har intet UI. Foxtrot erstatter applikationernes Core; dette bibliotek leverer UI-kontrollerne.

Lokal afprøvning med Docker (anbefalet)

cd /home/mpj/Dokumenter/Development/twig_template
docker compose up --build -d

Åbn http://localhost:8088 på maskinen, hvor Docker kører. Serveren lytter på 0.0.0.0 inde i containeren; porten publiceres kun lokalt på værten. Hvis browseren kører på en anden maskine, brug SSH-portforwarding: ssh -L 8088:127.0.0.1:8088 brugernavn@docker-vaert. Kildekoden monteres skrivebeskyttet, så ændringer ses ved genindlæsning. Composer-afhængigheder ligger i et separat Docker-volume.

docker compose logs demo
docker compose exec demo composer test
docker compose down

Stop en eventuel eksisterende demoserver på port 8088 før opstart.

Lokal afprøvning uden Docker

composer install
composer demo

Åbn http://127.0.0.1:8088. Demoen bruger eksempeldata uden database eller login. Formularen viser modtagne POST-værdier. En umarkeret checkbox afleveres ikke; deaktiverede felter afleveres heller ikke. Valutafelter accepterer danske tal med højst to decimaler og afleverer decimalpunkt uden tusindtalsseparator. JavaScript skal være indlæst til valutaindsendelse; serveren skal altid validere input. Dato-input bruger browserens lokale visning og afleverer YYYY-MM-DD. Fødselsdatoer er kalenderdatoer og skal leveres uden tidszonekonvertering.

composer test

Testene kontrollerer rendering, escaping, tomme datoer, nul, valuta og valgte muligheder. Browseradfærd og formularindsendelse afprøves manuelt i demoen. Demoens CSS er en enkel prøvevisning. Den endelige visuelle integration afstemmes med applikationerne. Eksisterende apps er ikke ændret eller migreret.

Tilslutning til Foxtrot

Pakkenavnet mpjsoft/twig-template og PHP-namespace er foreløbige. Registrer biblioteket på samme loader som Twig bruger:

$loader = new \Twig\Loader\FilesystemLoader($appViews);
$twig = new \Twig\Environment($loader, ['autoescape' => 'html']);
\MPJSoft\TwigTemplate\Library::register($twig, $loader);
{% include '@ui/Controls/input.html.twig' with {
    name: 'email', label: 'Email', type: 'email', value: person.email
} only %}

Kontroller findes under templates/Controls. Person/details.html.twig sammensætter inputkontroller ud fra person, fields og mode (view eller edit). Appen ejer den ydre formular, gemning, adgangskontrol og eventuelle skjulte billet-/arrangementsfelter. Feltnavne er foreløbig tilpasset eksisterende kode, fx sirname og adress.

Biblioteket udvikles her; vendor er installationen, ikke stedet til rettelser. Under lokal udvikling kan en apps Composer path-repository pege på denne mappe. JS og CSS indlæses én gang via {% include '@ui/assets.html.twig' %} i layoutets head. Demoen serverer begge filer lokalt med versionsbestemte adresser via demo/router.php. Loginadresser og loginforløb håndteres af appen/Foxtrot og indgår ikke i demoen.

Versionsbestemte assets og Codeberg Pages

Biblioteket fastlåser asset-versionen i Library::ASSET_VERSION (første udviklingsversion: 0.1.0). Ved enhver udgivet ændring til JS/CSS skal versionen øges, før nye assets bygges. En publiceret versionsmappe må aldrig ændres eller slettes, mens apps bruger den.

Klargør en mappe til publicering:

composer build-assets -- /tmp/twig-pages

Dette opretter 0.1.0/controls.js og 0.1.0/controls.css i målmappen. Kommandoen nægter at overskrive en eksisterende version. Publicér disse mapper på Codeberg Pages, og bevar de tidligere versioner. Repository, Pages-adresse og eventuelt eget domæne er endnu ikke konfigureret.

I appens Twig-opsætning:

Library::register($twig, $loader, 'https://DIT-NAVN.codeberg.page/DIT-REPOSITORY');

I layoutets head, før appens egne styles:

{% include '@ui/assets.html.twig' %}

Baseadressen indeholder ikke versionsnummer. Biblioteket tilføjer selv den version, som passer til templates. Brug aldrig latest til produktion. Du kan bruge eget domæne eller en lokal baseadresse med samme mappestruktur. Demoen bruger lokale filer; UI_ASSET_BASE_URL kan bruges til at afprøve ekstern hosting. Ved ændringer i Composer-afhængigheder eller autoload-konfiguration genbygges containeren.

Distribution og hosting

Se Codeberg-vejledningen for den slanke Composer-release og Pages-opsætning.