Skip to content
Snippets Groups Projects
Verified Commit 72397df3 authored by Alex Pott's avatar Alex Pott
Browse files

Issue #3450516 by kim.pepper: Add support for !service_closure custom tag in YamlFileLoader

parent cdb29302
No related branches found
No related tags found
28 merge requests!11131[10.4.x-only-DO-NOT-MERGE]: Issue ##2842525 Ajax attached to Views exposed filter form does not trigger callbacks,!9470[10.3.x-only-DO-NOT-MERGE]: #3331771 Fix file_get_contents(): Passing null to parameter,!8736Update the Documention As per the Function uses.,!8540Issue #3457061: Bootstrap Modal dialog Not closing after 10.3.0 Update,!8528Issue #3456871 by Tim Bozeman: Support NULL services,!8513Issue #3453786: DefaultSelection should document why values for target_bundles NULL and [] behave as they do,!8373Issue #3427374 by danflanagan8, Vighneshh: taxonomy_tid ViewsArgumentDefault...,!8126Added escape fucntionality on admintoolbar close icon,!3878Removed unused condition head title for views,!3818Issue #2140179: $entity->original gets stale between updates,!3742Issue #3328429: Create item list field formatter for displaying ordered and unordered lists,!3731Claro: role=button on status report items,!3651Issue #3347736: Create new SDC component for Olivero (header-search),!3531Issue #3336994: StringFormatter always displays links to entity even if the user in context does not have access,!3355Issue #3209129: Scrolling problems when adding a block via layout builder,!3154Fixes #2987987 - CSRF token validation broken on routes with optional parameters.,!3133core/modules/system/css/components/hidden.module.css,!2964Issue #2865710 : Dependencies from only one instance of a widget are used in display modes,!2812Issue #3312049: [Followup] Fix Drupal.Commenting.FunctionComment.MissingReturnType returns for NULL,!2378Issue #2875033: Optimize joins and table selection in SQL entity query implementation,!2062Issue #3246454: Add weekly granularity to views date sort,!1105Issue #3025039: New non translatable field on translatable content throws error,!10223132456: Fix issue where views instances are emptied before an ajax request is complete,!877Issue #2708101: Default value for link text is not saved,!617Issue #3043725: Provide a Entity Handler for user cancelation,!579Issue #2230909: Simple decimals fail to pass validation,!560Move callback classRemove outside of the loop,!555Issue #3202493
Pipeline #188994 canceled
Pipeline: drupal

#188997

    ......@@ -9,6 +9,7 @@
    use Drupal\Component\Serialization\Exception\InvalidDataTypeException;
    use Drupal\Core\Serialization\Yaml;
    use Symfony\Component\DependencyInjection\Alias;
    use Symfony\Component\DependencyInjection\Argument\ServiceClosureArgument;
    use Symfony\Component\DependencyInjection\Argument\ServiceLocatorArgument;
    use Symfony\Component\DependencyInjection\Argument\TaggedIteratorArgument;
    use Symfony\Component\DependencyInjection\ContainerInterface;
    ......@@ -492,6 +493,11 @@ private function resolveServices(mixed $value): mixed
    return $argument;
    }
    if ($value->getTag() === 'service_closure') {
    return new ServiceClosureArgument($this->resolveServices($argument));
    }
    }
    if (is_array($value)) {
    $value = array_map(array($this, 'resolveServices'), $value);
    ......
    ......@@ -9,7 +9,9 @@
    use Drupal\Core\DependencyInjection\YamlFileLoader;
    use Drupal\Tests\UnitTestCase;
    use org\bovigo\vfs\vfsStream;
    use Symfony\Component\DependencyInjection\Argument\ServiceClosureArgument;
    use Symfony\Component\DependencyInjection\Argument\TaggedIteratorArgument;
    use Symfony\Component\DependencyInjection\Reference;
    /**
    * @coversDefaultClass \Drupal\Core\DependencyInjection\YamlFileLoader
    ......@@ -39,6 +41,9 @@ class: \Drupal\Core\ExampleClass
    example_tagged_iterator:
    class: \Drupal\Core\ExampleClass
    arguments: [!tagged_iterator foo.bar]"
    example_service_closure:
    class: \Drupal\Core\ExampleClass
    arguments: [!service_closure '@example_service_1']"
    YAML;
    vfsStream::setup('drupal', NULL, [
    ......@@ -63,6 +68,13 @@ class: \Drupal\Core\ExampleClass
    $this->assertTrue($builder->has('Drupal\Core\ExampleClass'));
    $this->assertSame('Drupal\Core\ExampleClass', $builder->getDefinition('Drupal\Core\ExampleClass')->getClass());
    $this->assertInstanceOf(TaggedIteratorArgument::class, $builder->getDefinition('example_tagged_iterator')->getArgument(0));
    // Test service closures.
    $service_closure = $builder->getDefinition('example_service_closure')->getArgument(0);
    $this->assertInstanceOf(ServiceClosureArgument::class, $service_closure);
    $ref = $service_closure->getValues()[0];
    $this->assertInstanceOf(Reference::class, $ref);
    $this->assertEquals('example_service_1', $ref);
    }
    /**
    ......
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Finish editing this message first!
    Please register or to comment