Skip to content

Commit 9f8350b

Browse files
authored
✨ Add support for passing arguments to Partials (#325)
1 parent ad347be commit 9f8350b

File tree

10 files changed

+24
-18
lines changed

10 files changed

+24
-18
lines changed

src/Builder.php

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
* @method FieldBuilder addNumber(string $name, array $args = [])
4646
* @method FieldBuilder addOembed(string $name, array $args = [])
4747
* @method FieldBuilder addPageLink(string $name, array $args = [])
48-
* @method FieldBuilder addPartial(string $partial)
48+
* @method FieldBuilder addPartial(string $partial, array $args = [])
4949
* @method FieldBuilder addPartials(array $partials)
5050
* @method FieldBuilder addPassword(string $name, array $args = [])
5151
* @method FieldBuilder addPostObject(string $name, array $args = [])
@@ -91,14 +91,14 @@ public static function make(string $name, array $config = []): self
9191
/**
9292
* Add a partial to the field group.
9393
*/
94-
public function addPartial(string $partial): self
94+
public function addPartial(string $partial, array $args = []): self
9595
{
9696
if (
9797
is_string($partial) &&
9898
is_subclass_of($partial, Partial::class) &&
9999
! (new ReflectionClass($partial))->isAbstract()
100100
) {
101-
$partial = $partial::make($this->composer())->compose();
101+
$partial = $partial::make($this->composer())->compose($args);
102102
}
103103

104104
if (! is_a($partial, FieldsBuilder::class)) {
@@ -113,8 +113,11 @@ public function addPartial(string $partial): self
113113
*/
114114
public function addPartials(array $partials): self
115115
{
116-
foreach ($partials as $partial) {
117-
$this->addPartial($partial);
116+
foreach ($partials as $key => $value) {
117+
$partial = is_string($value) ? $value : $key;
118+
$args = is_array($value) ? $value : [];
119+
120+
$this->addPartial($partial, $args);
118121
}
119122

120123
return $this;

src/Builder/AccordionBuilder.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
* @method FieldBuilder addNumber(string $name, array $args = [])
3232
* @method FieldBuilder addOembed(string $name, array $args = [])
3333
* @method FieldBuilder addPageLink(string $name, array $args = [])
34-
* @method FieldBuilder addPartial(string $partial)
34+
* @method FieldBuilder addPartial(string $partial, array $args = [])
3535
* @method FieldBuilder addPartials(array $partials)
3636
* @method FieldBuilder addPassword(string $name, array $args = [])
3737
* @method FieldBuilder addPostObject(string $name, array $args = [])

src/Builder/ChoiceFieldBuilder.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
* @method FieldBuilder addNumber(string $name, array $args = [])
3232
* @method FieldBuilder addOembed(string $name, array $args = [])
3333
* @method FieldBuilder addPageLink(string $name, array $args = [])
34-
* @method FieldBuilder addPartial(string $partial)
34+
* @method FieldBuilder addPartial(string $partial, array $args = [])
3535
* @method FieldBuilder addPartials(array $partials)
3636
* @method FieldBuilder addPassword(string $name, array $args = [])
3737
* @method FieldBuilder addPostObject(string $name, array $args = [])

src/Builder/FieldBuilder.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
* @method FieldBuilder addNumber(string $name, array $args = [])
3535
* @method FieldBuilder addOembed(string $name, array $args = [])
3636
* @method FieldBuilder addPageLink(string $name, array $args = [])
37-
* @method FieldBuilder addPartial(string $partial)
37+
* @method FieldBuilder addPartial(string $partial, array $args = [])
3838
* @method FieldBuilder addPartials(array $partials)
3939
* @method FieldBuilder addPassword(string $name, array $args = [])
4040
* @method FieldBuilder addPostObject(string $name, array $args = [])

src/Builder/FlexibleContentBuilder.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
* @method FieldBuilder addNumber(string $name, array $args = [])
3636
* @method FieldBuilder addOembed(string $name, array $args = [])
3737
* @method FieldBuilder addPageLink(string $name, array $args = [])
38-
* @method FieldBuilder addPartial(string $partial)
38+
* @method FieldBuilder addPartial(string $partial, array $args = [])
3939
* @method FieldBuilder addPartials(array $partials)
4040
* @method FieldBuilder addPassword(string $name, array $args = [])
4141
* @method FieldBuilder addPostObject(string $name, array $args = [])

src/Builder/GroupBuilder.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
* @method FieldBuilder addNumber(string $name, array $args = [])
3434
* @method FieldBuilder addOembed(string $name, array $args = [])
3535
* @method FieldBuilder addPageLink(string $name, array $args = [])
36-
* @method FieldBuilder addPartial(string $partial)
36+
* @method FieldBuilder addPartial(string $partial, array $args = [])
3737
* @method FieldBuilder addPartials(array $partials)
3838
* @method FieldBuilder addPassword(string $name, array $args = [])
3939
* @method FieldBuilder addPostObject(string $name, array $args = [])

src/Builder/RepeaterBuilder.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
* @method FieldBuilder addNumber(string $name, array $args = [])
3434
* @method FieldBuilder addOembed(string $name, array $args = [])
3535
* @method FieldBuilder addPageLink(string $name, array $args = [])
36-
* @method FieldBuilder addPartial(string $partial)
36+
* @method FieldBuilder addPartial(string $partial, array $args = [])
3737
* @method FieldBuilder addPartials(array $partials)
3838
* @method FieldBuilder addPassword(string $name, array $args = [])
3939
* @method FieldBuilder addPostObject(string $name, array $args = [])

src/Builder/TabBuilder.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
* @method FieldBuilder addNumber(string $name, array $args = [])
3232
* @method FieldBuilder addOembed(string $name, array $args = [])
3333
* @method FieldBuilder addPageLink(string $name, array $args = [])
34-
* @method FieldBuilder addPartial(string $partial)
34+
* @method FieldBuilder addPartial(string $partial, array $args = [])
3535
* @method FieldBuilder addPartials(array $partials)
3636
* @method FieldBuilder addPassword(string $name, array $args = [])
3737
* @method FieldBuilder addPostObject(string $name, array $args = [])

src/Composer.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,15 @@ public function handle(): self
7474
/**
7575
* Call a method using the application container.
7676
*/
77-
protected function call(string $hook): mixed
77+
protected function call(string $hook, array $args = []): mixed
7878
{
7979
if (! method_exists($this, $hook)) {
8080
return null;
8181
}
8282

83-
return $this->app->call([$this, $hook]);
83+
return $this->app->call([$this, $hook], [
84+
'args' => $args,
85+
]);
8486
}
8587

8688
/**
@@ -134,9 +136,9 @@ public function getFields(bool $cache = true): array
134136
/**
135137
* Resolve the fields from the Composer with the container.
136138
*/
137-
public function resolveFields(): mixed
139+
public function resolveFields(array $args = []): mixed
138140
{
139-
return $this->call('fields') ?? [];
141+
return $this->call('fields', $args) ?? [];
140142
}
141143

142144
/**

src/Partial.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@ abstract class Partial extends Composer
77
/**
88
* Compose and register the defined field groups with ACF.
99
*
10+
* @param array $args Optional arguments to pass to the partial.
1011
* @return \StoutLogic\AcfBuilder\FieldsBuilder|void
1112
*/
12-
public function compose()
13+
public function compose(array $args = [])
1314
{
14-
$fields = $this->resolveFields();
15+
$fields = $this->resolveFields($args);
1516

1617
if (blank($fields)) {
1718
return;

0 commit comments

Comments
 (0)