Skip to content

Commit ee9f8ff

Browse files
Merge pull request #5 from bleech/filterParams
add prefix to field name if filter param specified
2 parents 1eaf12a + 0a49e75 commit ee9f8ff

File tree

2 files changed

+42
-5
lines changed

2 files changed

+42
-5
lines changed

lib/ACFComposer/ResolveConfig.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,16 @@ protected static function forEntity($config, $requiredAttributes, $parentKeys =
4242
$filterName = $config;
4343
$filterParts = explode('#', $filterName);
4444
if (isset($filterParts[1])) {
45-
$config = apply_filters($filterParts[0], null, $filterParts[1]);
45+
$prefix = $filterParts[1];
46+
$config = apply_filters($filterParts[0], null, $prefix);
47+
if (!self::isAssoc($config)) {
48+
$config = array_map(function ($singleConfig) use ($prefix) {
49+
$singleConfig['name'] = $prefix . '_' . $singleConfig['name'];
50+
return $singleConfig;
51+
}, $config);
52+
} else {
53+
$config['name'] = $prefix . '_' . $config['name'];
54+
}
4655
} else {
4756
$config = apply_filters($filterName, null);
4857
}

tests/test-resolveConfigForField.php

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,20 +72,48 @@ function testForFieldGetConfigFromFilter() {
7272
$this->assertEquals($someField, $output);
7373
}
7474

75-
function testForFieldGetConfigFromFilterWithArguments() {
76-
$config = 'ACFComposer/Fields/someField#argument';
75+
function testForFieldGetConfigFromFilterWithArgument() {
76+
$config = 'ACFComposer/Fields/someField#prefix';
7777
$filter = 'ACFComposer/Fields/someField';
7878
$someField = [
7979
'name' => 'someField',
8080
'label' => 'Some Field',
8181
'type' => 'someType'
8282
];
8383
Filters::expectApplied($filter)
84-
->with(null, 'argument')
84+
->with(null, 'prefix')
8585
->once()
8686
->andReturn($someField);
8787
$output = ResolveConfig::forField($config);
88-
$someField['key'] = "field_someField";
88+
$someField['name'] = "prefix_someField";
89+
$someField['key'] = "field_prefix_someField";
90+
$this->assertEquals($someField, $output);
91+
}
92+
93+
function testMultipleForFieldGetConfigFromFilterWithArgument() {
94+
$config = 'ACFComposer/Fields/someField#prefix';
95+
$filter = 'ACFComposer/Fields/someField';
96+
$someField = [
97+
[
98+
'name' => 'someField',
99+
'label' => 'Some Field',
100+
'type' => 'someType'
101+
],
102+
[
103+
'name' => 'someOtherField',
104+
'label' => 'Some Field',
105+
'type' => 'someType'
106+
]
107+
];
108+
Filters::expectApplied($filter)
109+
->with(null, 'prefix')
110+
->once()
111+
->andReturn($someField);
112+
$output = ResolveConfig::forField($config);
113+
$someField[0]['name'] = "prefix_someField";
114+
$someField[0]['key'] = "field_prefix_someField";
115+
$someField[1]['name'] = "prefix_someOtherField";
116+
$someField[1]['key'] = "field_prefix_someOtherField";
89117
$this->assertEquals($someField, $output);
90118
}
91119

0 commit comments

Comments
 (0)