From 34da61805bd9402b5bbed0e297c8fd3250f9e490 Mon Sep 17 00:00:00 2001 From: Jim Cottrell Date: Tue, 18 Dec 2018 09:03:03 -0700 Subject: [PATCH] Replace URL parameters dynamically without needing a list in advance (#3361) Fixes #3358. Credit to @jimcottrell --- modules/backend/behaviors/FormController.php | 2 +- modules/backend/widgets/Lists.php | 10 ++-------- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/modules/backend/behaviors/FormController.php b/modules/backend/behaviors/FormController.php index a266fcb86c..24996b8f91 100644 --- a/modules/backend/behaviors/FormController.php +++ b/modules/backend/behaviors/FormController.php @@ -463,7 +463,7 @@ public function makeRedirect($context = null, $model = null) } if ($model && $redirectUrl) { - $redirectUrl = RouterHelper::parseValues($model, array_keys($model->getAttributes()), $redirectUrl); + $redirectUrl = RouterHelper::replaceParameters($model, $redirectUrl); } if (starts_with($redirectUrl, 'http://') || starts_with($redirectUrl, 'https://')) { diff --git a/modules/backend/widgets/Lists.php b/modules/backend/widgets/Lists.php index 0a21fac559..fd7c5caf4a 100644 --- a/modules/backend/widgets/Lists.php +++ b/modules/backend/widgets/Lists.php @@ -631,12 +631,7 @@ public function getRecordUrl($record) return null; } - $data = $record->toArray(); - $data += [$record->getKeyName() => $record->getKey()]; - - $columns = array_keys($data); - - $url = RouterHelper::parseValues($data, $columns, $this->recordUrl); + $url = RouterHelper::replaceParameters($record, $this->recordUrl); return Backend::url($url); } @@ -651,8 +646,7 @@ public function getRecordOnClick($record) return null; } - $columns = array_keys($record->getAttributes()); - $recordOnClick = RouterHelper::parseValues($record, $columns, $this->recordOnClick); + $recordOnClick = RouterHelper::replaceParameters($record, $this->recordOnClick); return Html::attributes(['onclick' => $recordOnClick]); }