htmlizer fix iterate and test

This commit is contained in:
Yuri Kuznetsov
2024-01-22 20:12:29 +02:00
parent fe7a764935
commit ac7ba173cd
2 changed files with 23 additions and 0 deletions

View File

@@ -919,6 +919,11 @@ class Htmlizer
$newTemplate = str_replace('</iteration-wrapper>', '{{/each}}', $newTemplate);
$from = strpos($newTemplate,'<body>') + 6;
$to = strrpos($newTemplate, '</body>') - strlen($newTemplate);
$newTemplate = substr($newTemplate, $from, $to);
return preg_replace('/<iteration-wrapper v="{{(.*)}}">/', '{{#each $1}}', $newTemplate) ?? '';
}

View File

@@ -223,4 +223,22 @@ class HtmlizerTest extends TestCase
$html = $this->htmlizer->render($entity, $template);
$this->assertEquals('test', $html);
}
public function testIterate(): void
{
/** @noinspection HtmlUnknownAttribute */
$template = "<ul><li iterate=\"{{items}}\">{{name}}</li></ul>";
$html = $this->htmlizer->render(null, $template, null, [
'items' => [
['name' => '1'],
['name' => '2'],
],
]);
/** @noinspection HtmlUnknownAttribute */
$expected = "<ul><li>1</li><li>2</li></ul>";
$this->assertEquals($expected, $html);
}
}