Allow a closure to be passed with image replacement tags

This commit is contained in:
Michel Bardelmeijer 2019-09-09 13:49:16 +02:00
parent 8fbd060148
commit 5a68ef600b
2 changed files with 12 additions and 3 deletions

View File

@ -447,6 +447,13 @@ class TemplateProcessor
$width = null; $width = null;
$height = null; $height = null;
$ratio = null; $ratio = null;
// a closure can be passed as replacement value which after resolving, can contain the replacement info for the image
// use case: only when a image if found, the replacement tags can be generated
if (is_callable($replaceImage)) {
$replaceImage = $replaceImage();
}
if (is_array($replaceImage) && isset($replaceImage['path'])) { if (is_array($replaceImage) && isset($replaceImage['path'])) {
$imgPath = $replaceImage['path']; $imgPath = $replaceImage['path'];
if (isset($replaceImage['width'])) { if (isset($replaceImage['width'])) {

View File

@ -392,9 +392,11 @@ final class TemplateProcessorTest extends \PHPUnit\Framework\TestCase
$imagePath = __DIR__ . '/_files/images/earth.jpg'; $imagePath = __DIR__ . '/_files/images/earth.jpg';
$variablesReplace = array( $variablesReplace = array(
'headerValue' => $imagePath, 'headerValue' => function () use ($imagePath) {
'documentContent' => array('path' => $imagePath, 'width' => 500, 'height' => 500), return $imagePath;
'footerValue' => array('path' => $imagePath, 'width' => 100, 'height' => 50, 'ratio' => false), },
'documentContent' => array('path' => $imagePath, 'width' => 500, 'height' => 500),
'footerValue' => array('path' => $imagePath, 'width' => 100, 'height' => 50, 'ratio' => false),
); );
$templateProcessor->setImageValue(array_keys($variablesReplace), $variablesReplace); $templateProcessor->setImageValue(array_keys($variablesReplace), $variablesReplace);