From baefa3e50ddf09ae5caaf0618aaf1e547d5a4c32 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Tue, 27 Sep 2016 20:39:29 +1000 Subject: [PATCH] Allow passing arbitrary recordUrl to relationRender --- .../backend/behaviors/RelationController.php | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/modules/backend/behaviors/RelationController.php b/modules/backend/behaviors/RelationController.php index 099ee721e..017e61634 100644 --- a/modules/backend/behaviors/RelationController.php +++ b/modules/backend/behaviors/RelationController.php @@ -311,7 +311,7 @@ class RelationController extends ControllerBehavior } if ($extraConfig = post(self::PARAM_EXTRA_CONFIG)) { - $this->applyExtraConfig($field, $extraConfig); + $this->applyExtraConfig($extraConfig); } $this->alias = camel_case('relation ' . $field); @@ -398,10 +398,10 @@ class RelationController extends ControllerBehavior /* * Apply options and extra config */ - $allowConfig = ['readOnly']; + $allowConfig = ['readOnly', 'recordUrl']; if ($extraConfig = array_only($options, $allowConfig)) { $this->extraConfig = $extraConfig; - $this->applyExtraConfig($field, $extraConfig); + $this->applyExtraConfig($extraConfig, $field); } /* @@ -1504,12 +1504,19 @@ class RelationController extends ControllerBehavior /** * Apply extra configuration */ - protected function applyExtraConfig($field, $config) + protected function applyExtraConfig($config, $field = null) { + if (!$field) { + $field = $this->field; + } + + $parsedConfig = array_only($config, ['readOnly']); + $parsedConfig['view'] = array_only($config, ['recordUrl']); + if (is_array($config) && isset($this->originalConfig->{$field})) { - $this->originalConfig->{$field} = array_merge( + $this->originalConfig->{$field} = array_merge_recursive( $this->originalConfig->{$field}, - $config + $parsedConfig ); } }