Skip to content

Commit c3e51d8

Browse files
committed
fix: Template::render() accepts object for template parameters (#351)
Latte\Engine::render() supports passing an object as template parameters, but Nette\Bridges\ApplicationLatte\Template::render() only accepted arrays. This adds object|array union type to render() and renderToString().
1 parent 0852e8e commit c3e51d8

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

src/Bridges/ApplicationLatte/Template.php

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,26 +35,36 @@ final public function getLatte(): Latte\Engine
3535

3636
/**
3737
* Renders template to output.
38-
* @param array<string, mixed> $params
38+
* @param object|array<string, mixed> $params
3939
*/
40-
public function render(?string $file = null, array $params = []): void
40+
public function render(?string $file = null, object|array $params = []): void
4141
{
42-
Nette\Utils\Arrays::toObject($params, $this);
42+
Nette\Utils\Arrays::toObject(self::paramsToArray($params), $this);
4343
$this->latte->render($file ?? $this->file, $this);
4444
}
4545

4646

4747
/**
4848
* Renders template to output.
49-
* @param array<string, mixed> $params
49+
* @param object|array<string, mixed> $params
5050
*/
51-
public function renderToString(?string $file = null, array $params = []): string
51+
public function renderToString(?string $file = null, object|array $params = []): string
5252
{
53-
Nette\Utils\Arrays::toObject($params, $this);
53+
Nette\Utils\Arrays::toObject(self::paramsToArray($params), $this);
5454
return $this->latte->renderToString($file ?? $this->file, $this);
5555
}
5656

5757

58+
/**
59+
* Converts object parameters to array.
60+
* @return array<string, mixed>
61+
*/
62+
private static function paramsToArray(object|array $params): array
63+
{
64+
return is_array($params) ? $params : get_object_vars($params);
65+
}
66+
67+
5868
/**
5969
* Renders template to string.
6070
*/

0 commit comments

Comments
 (0)