fields as $field) { /** @var FormFieldBinding $binding */ foreach ($field->bindings as $binding) { if ($binding->merge_strategy !== FormFieldBindingMergeStrategy::Append) { continue; } $entity = (string) $binding->target_entity; $attribute = (string) $binding->target_attribute; try { $meta = $this->registry->resolve($entity, $attribute); } catch (UnknownBindingTargetException) { return PublishGuardResult::failed( guardCode: $this->code(), messageKey: 'form_builder_publish_guards.append_strategy_requires_collection_target', offendingFormFieldId: (string) $field->id, context: [ 'reason' => 'unknown_target', 'entity' => $entity, 'attribute' => $attribute, ], ); } if ($meta->type !== BindingTargetType::COLLECTION) { return PublishGuardResult::failed( guardCode: $this->code(), messageKey: 'form_builder_publish_guards.append_strategy_requires_collection_target', offendingFormFieldId: (string) $field->id, context: [ 'reason' => 'scalar_target', 'entity' => $entity, 'attribute' => $attribute, 'target_type' => $meta->type->value, ], ); } } } return PublishGuardResult::passed($this->code()); } }