diff --git a/src/Fields/FieldTransformer.php b/src/Fields/FieldTransformer.php index 35360f4965..06759438d1 100644 --- a/src/Fields/FieldTransformer.php +++ b/src/Fields/FieldTransformer.php @@ -131,7 +131,7 @@ public static function toVue($field): array private static function referenceFieldToVue($field): array { - $fieldsetField = Arr::get(static::fieldsetFields(), $field['field'], []); + $fieldsetField = static::fieldsetFields()[$field['field']] ?? []; $mergedConfig = array_merge( $fieldsetFieldConfig = Arr::get($fieldsetField, 'config', []), diff --git a/tests/Fields/FieldTransformerTest.php b/tests/Fields/FieldTransformerTest.php index 4d2f9d98fe..b8d3970252 100644 --- a/tests/Fields/FieldTransformerTest.php +++ b/tests/Fields/FieldTransformerTest.php @@ -3,6 +3,7 @@ namespace Tests\Fields; use Statamic\Facades\AssetContainer; +use Statamic\Fields\Fieldset; use Statamic\Fields\FieldTransformer; use Statamic\Fields\Fieldtype; use Tests\PreventSavingStacheItemsToDisk; @@ -366,4 +367,28 @@ public function it_saves_a_toggle_as_false_where_the_default_is_true() 'duplicate' => false, ], $fromVue['field']); } + + /** @test */ + public function it_supports_addon_linked_fields() + { + $fieldset = tap(new Fieldset) + ->setHandle('addon::some_fieldset') + ->setContents(['fields' => [ + [ + 'handle' => 'field1', + 'field' => ['type' => 'text', 'foo' => 'bar'], + ], + ]]); + + \Statamic\Facades\Fieldset::shouldReceive('all')->andReturn(collect([ + 'addon::some' => $fieldset, + ])); + + $this->assertEquals([ + 'type' => 'text', + 'foo' => 'bar', + 'width' => 100, + 'localizable' => false, + ], $this->configToVue('addon::some_fieldset.field1')); + } }