Seit nostromo/framework 6.5.113 kann Framework-zugehöriger Javscript-Code direkt in den PHP-Repositories untergebracht werden. Die Ordnerstruktur dazu muss wie folgt aussehen, am Beispiel das controls-Projektes:
Alle .js-Dateien werden automatisch minified und in der gleichen Struktur nach www/js/components/nostromo/controls
kopiert. Die Unterordner nostromo/controls
sind für jedes Projekt anders und entsprechen dem Namen in der composer.json.
Ein Script requiren
Die Skripte werden automatisch registriert und können wie folgt in PHP required werden:
Javascript::requireLibrary('nostromo/controls/DataControls/GridControl');
Der Namespace beginnt hierbei immer mit dem Projektnamen, z.B. nostromo/controls. Danach folgt ein Schrägstrich und die Ordner-Struktur im im resources/js/-Ordner des Projektes, z.B. DataControls/GridControl. Die Endung ‘.js’ wird weg gelassen!
Internationalisierung
Wie in beschrieben in https://newfrontiers.atlassian.net/l/c/KDpb11Gj können Übersetzungen in Javascript-Dateien benutzt werden. Allerdings muss für Framework-Javascript-Code der JavascriptTranslationProvider
nicht manuell aufgerufen werden. Das funktioniert wie folgt:
Wie oben im Bild zu sehen, existiert eine i18n.php-Datei. Mit dieser kann angegeben werden, welche Strings im Javascript-Code übersetzt werden müssen. Ein Beispiel:
<?php use NewFrontiers\Framework\Output\Strings; return [ 'are.you.sure.key', 'please wait', 'Error', 'The request could not be executed.', Strings::GESPEICHERT, Strings::GELOESCHT, ];
Hier wird nur angegeben, welche Strings für Javascript verfügbar sein müssen. Die eigentliche Übersetzung wird wie gewohnt in PHP erledigt und muss deshalb im i18n-Ordner des Projektes hinterlegt werden.
Todo
Aktuell können nur einzelne Scripts required werden. In Zukunft sollen auch Ordner required werden können, wie z.B.
nostromo/controls/DataControls
nostromo/controls
…
Minify übergehen
Aus Debugging-Gründen kann das minify der .js-Dateien übergangen werden. Dazu muss composer install
mit der Environment-Variable NOSTROMO_MINIMIZE_JS=off
ausgeführt werden. In einer Shell z.B. durch
NOSTROMO_MINIMIZE_JS=off composer install
Oder unter Windows mit dem set
-Befehl.
Add Comment