9. Für Programmierer und Entwickler
Dieser Abschnitt richtet sich an Programmierer, die in eigenen Modulen Einfluss auf diese Erweiterung nehmen wollen.
Interne Feldvariablen für PDF
Neu in der Version 2.3 sind interne Feldvariablen, die man über den pdf_formsBeforePdf-Hook eintragen kann. Diese Variablen lassen sich dann genauso verwenden, wie Formularfelder aus dem abgesendeten Formular. Für die Möglichkeit, diese Variablen auch in den Bedingungen verwenden zu können, muss ein Eintrag in der config/config.yaml erfolgen, damit diese Felder in die SELECT-Auswahl hinzugefügt werden:
# config/config.yaml
softleister_pdfforms:
add_condition_options: [foo, bar]
Im Beispiel werden die Feldvariablen foo und bar für Bedingungen verfügbar gemacht. Nach dem Eintrag in die config.yaml-Datei muss der Symfony-Cache gelöscht/erneuert werden.
Die Variablen und deren Werte werden dann im pdf_formsBeforePdf-Hook angelegt (siehe unten).
Hooks
Im Programmablauf kann man sich an verschiedenen Stellen mittels einer HOOK-Registrierung einkoppeln. Die Erweiterung contao-pdfforms-bundle ruft die registrierten Hooks auf, sofern Registrierungen vorhanden sind.
Folgende Hooks sind verfügbar:
pdf_formsBeforePdf
Wird nach der Datenaufbereitung aufgerufen, bevor das PDF erstellt wird. Hier können in dem übergebenen Array $arrPDF weitere Einträge hinzugefügt oder vorhandene modifiziert werden. Der Hook muss das $arrPDF als Rückgabewert zurückgeben.
Unter 'options' gibt es bisher nur 'basename:Anzahl' für die Ausgabeformatierung von Dateinamen.
Beispiel:
// src/EventListener/Pdf_formsBeforePdfListener.php
<?php
namespace App\EventListener;
use Contao\CoreBundle\DependencyInjection\Attribute\AsHook;
#[AsHook('pdf_formsBeforePdf')]
class Pdf_formsBeforePdfListener
{
public function __invoke(array $arrPDF)
{
// beliebiger Code
// Beispiel: Hinzufügen von internen Feldvariablen
// Die Variablen können im PDF genauso verwendet werden, wie Formulardaten
// Um das Feld auch in Bedingungen zu verwenden, ist ein Eintrag in der
// config/config.yaml notwendig (siehe oben)
$arrPDF['arrFields']['foo'] = ['type'=>'text', 'value'=>1, 'orig'=>'foo', 'options'=>''];
$arrPDF['arrFields']['bar'] = ['type'=>'text', 'value'=>'', 'orig'=>'bar', 'options'=>''];
// Beispiel: Die Textausgabe des Upload-Feldes mit dem feldnamen 'singleupload' soll
// den Dateinamen und 1 letztes Verzeichnis davor im PDF eintragen.
// Standard ist nur der Dateiname ohne Verzeichnis
//
// Option: basename:Anzahl der Verzeichnisse davor
if( isset( $arrPDF['arrFields']['singleupload'] ) ) {
$arrPDF['arrFields']['singleupload']['options'] = 'basename:1';
}
return $arrPDF;
}
}
pdf_formsPositions
Wird bei der PDF-Erstellung für jede Position im Formular aufgerufen. Hier besteht die Möglichkeit, noch Daten zu manipulieren. Die Seitennummer kann nicht verändert werden, da andernfalls die Ausgabe nicht korrekt funktioniert. Als Rückgabewert wird das übergebene und ggf. modifizierte Array $arrItem erwartet.
Beispiel:
// src/EventListener/Pdf_formsPositionsListener.php
<?php
namespace App\EventListener;
use Contao\CoreBundle\DependencyInjection\Attribute\AsHook;
#[AsHook('pdf_formsPositions')]
class Pdf_formsPositionsListener
{
public function __invoke(array $arrItem, array $arrPDF)
{
// beliebiger Code
return $arrItem;
}
}
pdf_formsAfterPdf
Wird nach der Erzeugung, Speicherung und der Übergabe an die Formularverarbeitung aufgerufen. Hier können weitere abschließende Aktivitäten per Hook eingefügt werden. Der Hook hat keinen Rückgabewert.
Beispiel:
// src/EventListener/Pdf_formsAfterPdfListener.php
<?php
namespace App\EventListener;
use Contao\CoreBundle\DependencyInjection\Attribute\AsHook;
#[AsHook('pdf_formsAfterPdf')]
class Pdf_formsAfterPdfListener
{
public function __invoke(string $pdfdatei, array $arrPDF): void
{
// beliebiger Code
}
}
No comments to display
No comments to display