Skip to content

Blog

Twig ist jetzt die neue Brezel-Templating-Engine of Choice

Twig ist eine Templating-Engine für PHP und ist im Symfony-Ökosystem etabliert. Mit Twig ist es möglich, sowohl Ausdrücke zu definieren als auch den Kontrollfluss zu steuern, wie bei Laravel Blade auch. Gravierender Unterschied ist, dass Twig über einen Sandbox-Modus verfügt und somit das Ausführen nicht genehmigter Funktionen und Methoden eingeschränkt werden kann. Das ist auch der Grund, warum wir Blade hinter uns lassen, denn Blade wird einfach in PHP-Code übersetzt und bietet daher keine Schutzmechanismen. Das bedeutet auch, dass es kein @php-Tag in unserer Twig-Umgebung geben wird. Komplexe Logik kann aber auch in Twig umgesetzt werden, etwa durch set, for und if. Auch Arrow-Functions sind in Twig vorhanden, sodass gängige Operationen auf Laravel-Collections wie map, filter, etc. von PHP in Twig konvertiert werden können. Siehe dazu etwa https://twig.symfony.com/doc/3.x/filters/filter.html.

Twig-Docs: https://twig.symfony.com/doc/3.x/templates.html

Was bedeutet das für neue Systeme?

Views in neuen Systemen DÜRFEN NICHT mehr auf Blade basieren. Da die einzig andere Templating-Engine in Brezel Twig ist, MUSS Twig verwendet werden.

Was bedeutet das für mein System?

Während der Übergangsphase MÜSSEN neue Views Twig verwenden. Views, die bis jetzt auf Blade basiert haben, SOLLEN in Twig konvertiert werden.

Über die Dauer der Übergangsphase muss noch abgestimmt werden. Fest steht, dass Blade-Templates nun deprecated sind.

How to use

Siehe den bakery_resource_view-Abschnitt auf der “Bakery Planner”-Seite.

25 November 2020

Deprecations

Workflow Modals

In Brezel gibt es (Stand 25.11.20) zwei Varianten, in Workflows Nutzereingaben per Modal abzufragen:

  1. Event-Layout: Eine Layout-Datei mit Namen <event-identifier>.detail.json wird in layouts/events platziert. Beim Auslösen des Events wird ein Modal mit diesem Layout geöffnet.

  2. Workflow-Element: ein Element des Typs action/modal wird angesteuert, das eine Webhook-Antwort an den Browser schickt mit der Anweisung, ein Modal zu öffnen. Das Ergebnis wird vom Browser an einen Checkpoint-Endpoint geschickt, von wo aus der Workflow weitergeführt wird.

Variante 1 ist deprecated. Es soll nur noch Variante 2 verwendet werden. Wenn das Layout wirklich von einer Datei kommen soll, kann man die Datei in layouts platzieren, bakery:load ausführen und es anschließend in den Optionen von action/modal auswählen. Zukünftig wird man evtl. Layouts auch per Bakery-Konfigurationsdateien pflegen können.

Migrations und Module-Loader

Bakery Migrations sind deprecated. Die (verbesserte) Funktionalität wird mittlerweile durch bakery:plan bzw. bakery:apply bereitgestellt.

Das gleiche gilt für den Module-Loader. bakery:load sollte momentan daher nur für stand-alone Layouts benutzt werden (solange sie nicht mit dem Planner verwaltet werden können) sowie für Workflows.

21 November 2020

Bakery Policies

Bakery-Ressourcen können von nun an andere Policies außer sync haben. Somit kann man beispielsweise mit detach erreichen, dass Entity-Konfigurationen nur angewandt werden, wenn sie nicht bereits von Nutzern oder Workflows innerhalb von Brezel bearbeitet wurden.

Siehe Resource Attributes und Entity.

11 November 2020

Information: Move recipe key one level higher

A few updates ago the interpretation of the recipe key changed. You will have to move it out of the options for the recipe to work.

Example:

Change

{
"identifier": "identifier",
"type": "type",
"options": {
"recipe": "recipe"
}
}

to

{
"identifier": "identifier",
"type": "type",
"recipe": "recipe"
}

06 November 2020

regroup brezel repos/projects

All repos for projects based on brezel are now moved to https://gitlab.com/kibro/basedOnBrezel. Please update this path locally if you access the files of those repos.

The same is true for most brezel projects, please check if the url was changed and use the new one.