From 33a5e72eeca6082dab5a4637b7aa857df39c9d05 Mon Sep 17 00:00:00 2001 From: Bruno Meilick Date: Thu, 19 Mar 2020 19:05:05 +0000 Subject: [PATCH] :bug: queries resolve order Signed-off-by: Bruno Meilick --- classes/Handlebars.php | 18 +++++++++++++----- composer.json | 2 +- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/classes/Handlebars.php b/classes/Handlebars.php index 330ffc9..2a3c42c 100644 --- a/classes/Handlebars.php +++ b/classes/Handlebars.php @@ -86,7 +86,7 @@ public function file($name): string return $this->lncFiles->hbsFile($name); } - private function array_map_recursive(&$arr, $fn) + private function array_map_recursive($arr, $fn) { return array_map(function ($item) use ($fn) { return is_array($item) ? $this->array_map_recursive($item, $fn) : $fn($item); @@ -114,7 +114,7 @@ private function array_merge_recursive(array $array, array $merge): array * @param array $params * @return array */ - public function queries(array $data, array $params): array + public function addQueries(array $data, array $params): array { $seperator = '{{ˇ෴ˇ}}'; $queries = $this->option('queries', []); @@ -132,13 +132,18 @@ public function queries(array $data, array $params): array $data = $this->array_merge_recursive($data, $result); } + return $data; + } + + public function resolveQueries(array $data, array $params): array + { // resolve queries in data - $data = $this->array_map_recursive($data, static function ($value) use ($params) { + return $this->array_map_recursive($data, static function ($value) use ($params) { if (is_a($value, Field::class)) { $value = $value->value(); } if (is_string($value) && Str::contains($value, '{{') && Str::contains($value, '}}')) { - return Str::template($value, $params); + $value = Str::template($value, $params); } return $value; }); @@ -284,9 +289,12 @@ public function render($name, array $data = [], $root = null, $file = null, $ret ]; $data = $this->prune($data); + $data = $this->addQueries($data, $params); $data = $this->modelData($data, $params['page']); $data = $this->kqlData($data, $template, $params['page']); - $data = $this->queries($data, $params); + var_dump($data); + $data = $this->resolveQueries($data, $params); + var_dump($data); $data = $this->fieldsToValue($data); $result = $this->read($template, $data); diff --git a/composer.json b/composer.json index 35f984d..6e7bea8 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "name": "bnomei/kirby3-handlebars", "type": "kirby-plugin", - "version": "3.3.4", + "version": "3.3.5", "license": "MIT", "description": "Kirby 3 Component for semantic templates with Handlebars and Mustache", "authors": [