Loading src/Plugin/SingleFileComponent/SimpleComponent.php +20 −1 Original line number Diff line number Diff line Loading @@ -119,7 +119,7 @@ class SimpleComponent extends ComponentBase { * {@inheritdoc} */ public function prepareContext(array &$context) { $context['sfc_unique_id'] = isset($context['sfc_unique_id']) ? $context['sfc_unique_id'] : uniqid($this->getId()); $context['sfc_unique_id'] = self::determineUniqueId($context); $attributes = new Attribute(); $attributes->setAttribute('data-sfc-id', $this->getId()); $attributes->setAttribute('data-sfc-unique-id', $context['sfc_unique_id']); Loading Loading @@ -320,4 +320,23 @@ class SimpleComponent extends ComponentBase { } } /** * Determines the unique ID for a component. * * @param array $context * The context being passed to the Twig template. * * @return string * The unique ID. */ protected function determineUniqueId(array $context) { $unique_ids = &drupal_static(__FUNCTION__, []); // Parent components may unintentionally pass their unique IDs to children. $id = !isset($context['sfc_unique_id']) || in_array($context['sfc_unique_id'], $unique_ids, TRUE) ? uniqid($this->getId()) : $context['sfc_unique_id']; $unique_ids[] = $id; return $id; } } tests/modules/sfc_test/components/simple_nested_unique_id.sfc 0 → 100644 +3 −0 Original line number Diff line number Diff line <template> {% include 'sfc--simple-unique-id' %} </template> tests/modules/sfc_test/components/simple_unique_id.sfc 0 → 100644 +3 −0 Original line number Diff line number Diff line <template> {{ sfc_unique_id }} </template> tests/src/Kernel/SimpleComponentTest.php +2 −0 Original line number Diff line number Diff line Loading @@ -66,6 +66,8 @@ class SimpleComponentTest extends KernelTestBase { $this->assertEquals(" <template>foo</template> bar <script>alert(`baz`)</script>", $this->renderComponent('simple_parse', [])); // Test nested unique IDs. $this->assertStringContainsString('simple_unique_id', $this->renderComponent('simple_nested_unique_id', [])); } /** Loading Loading
src/Plugin/SingleFileComponent/SimpleComponent.php +20 −1 Original line number Diff line number Diff line Loading @@ -119,7 +119,7 @@ class SimpleComponent extends ComponentBase { * {@inheritdoc} */ public function prepareContext(array &$context) { $context['sfc_unique_id'] = isset($context['sfc_unique_id']) ? $context['sfc_unique_id'] : uniqid($this->getId()); $context['sfc_unique_id'] = self::determineUniqueId($context); $attributes = new Attribute(); $attributes->setAttribute('data-sfc-id', $this->getId()); $attributes->setAttribute('data-sfc-unique-id', $context['sfc_unique_id']); Loading Loading @@ -320,4 +320,23 @@ class SimpleComponent extends ComponentBase { } } /** * Determines the unique ID for a component. * * @param array $context * The context being passed to the Twig template. * * @return string * The unique ID. */ protected function determineUniqueId(array $context) { $unique_ids = &drupal_static(__FUNCTION__, []); // Parent components may unintentionally pass their unique IDs to children. $id = !isset($context['sfc_unique_id']) || in_array($context['sfc_unique_id'], $unique_ids, TRUE) ? uniqid($this->getId()) : $context['sfc_unique_id']; $unique_ids[] = $id; return $id; } }
tests/modules/sfc_test/components/simple_nested_unique_id.sfc 0 → 100644 +3 −0 Original line number Diff line number Diff line <template> {% include 'sfc--simple-unique-id' %} </template>
tests/modules/sfc_test/components/simple_unique_id.sfc 0 → 100644 +3 −0 Original line number Diff line number Diff line <template> {{ sfc_unique_id }} </template>
tests/src/Kernel/SimpleComponentTest.php +2 −0 Original line number Diff line number Diff line Loading @@ -66,6 +66,8 @@ class SimpleComponentTest extends KernelTestBase { $this->assertEquals(" <template>foo</template> bar <script>alert(`baz`)</script>", $this->renderComponent('simple_parse', [])); // Test nested unique IDs. $this->assertStringContainsString('simple_unique_id', $this->renderComponent('simple_nested_unique_id', [])); } /** Loading