From de1780f529c0998a1532bedd2dcc1f8867a1f042 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Vo=C5=99=C3=AD=C5=A1ek?= Date: Sat, 24 Jul 2021 12:59:04 +0200 Subject: [PATCH] collect running callback triggers directly from render tree --- src/View.php | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/View.php b/src/View.php index 174036890f..eec8a7e08c 100644 --- a/src/View.php +++ b/src/View.php @@ -599,7 +599,7 @@ public function removeAttr($property) */ public function jsUrl($page = []) { - return $this->getApp()->jsUrl($page, false, $this->_getStickyArgs()); + return $this->getApp()->jsUrl($page, false, array_merge($this->getRunningCallbackArgs(), $this->_getStickyArgs())); } /** @@ -613,7 +613,24 @@ public function jsUrl($page = []) */ public function url($page = []) { - return $this->getApp()->url($page, false, $this->_getStickyArgs()); + return $this->getApp()->url($page, false, array_merge($this->getRunningCallbackArgs(), $this->_getStickyArgs())); + } + + protected function getRunningCallbackArgs(): array + { + if ($this->issetOwner() && $this->getOwner() instanceof self) { + $args = $this->getOwner()->getRunningCallbackArgs(); + } else { + $args = []; + } + + foreach ($this->elements as $v) { + if ($v instanceof Callback && $v->isTriggered() && $v->canTrigger()) { + $args[Callback::URL_QUERY_TRIGGER_PREFIX . $v->getUrlTrigger()] = $v->getTriggeredValue(); + } + } + + return $args; } /**