Encode extra config to isolate the logic

Fixes #2417
This commit is contained in:
Samuel Georges 2016-10-15 10:10:11 +11:00
parent 7b8f17e6d1
commit 8eafcaa090
2 changed files with 16 additions and 7 deletions

View File

@ -1509,15 +1509,24 @@ class RelationController extends ControllerBehavior
$field = $this->field;
}
if (!$config || !isset($this->originalConfig->{$field})) {
return;
}
if (
!is_array($config) &&
(!$config = @json_decode(@base64_decode($config), true))
) {
return;
}
$parsedConfig = array_only($config, ['readOnly']);
$parsedConfig['view'] = array_only($config, ['recordUrl']);
if (is_array($config) && isset($this->originalConfig->{$field})) {
$this->originalConfig->{$field} = array_merge_recursive(
$this->originalConfig->{$field},
$parsedConfig
);
}
$this->originalConfig->{$field} = array_replace_recursive(
$this->originalConfig->{$field},
$parsedConfig
);
}
/**

View File

@ -1,6 +1,6 @@
<div
id="<?= $this->relationGetId() ?>"
data-request-data="_relation_field: '<?= $relationField ?>', _relation_extra_config: <?= e(json_encode($relationExtraConfig)) ?>"
data-request-data="_relation_field: '<?= $relationField ?>', _relation_extra_config: '<?= e(base64_encode(json_encode($relationExtraConfig))) ?>'"
class="relation-behavior relation-view-<?= $relationViewMode ?>">
<?php if ($toolbar = $this->relationRenderToolbar()): ?>