diff --git a/core/modules/link/src/Plugin/migrate/process/FieldLink.php b/core/modules/link/src/Plugin/migrate/process/FieldLink.php index 143b7ea09be8ff0761bb4110746cf48fa0a956e0..14f615e3b4362caccab27c87c50b2538c4d4e3e5 100644 --- a/core/modules/link/src/Plugin/migrate/process/FieldLink.php +++ b/core/modules/link/src/Plugin/migrate/process/FieldLink.php @@ -60,10 +60,15 @@ public function __construct(array $configuration, $plugin_id, $plugin_definition */ protected function canonicalizeUri($uri) { // If we already have a scheme, we're fine. - if (empty($uri) || parse_url($uri, PHP_URL_SCHEME)) { + if (parse_url($uri, PHP_URL_SCHEME)) { return $uri; } + // Empty URI and non-links are allowed. + if (empty($uri) || in_array($uri, ['<nolink>', '<none>'])) { + return 'route:<nolink>'; + } + // Remove the <front> component of the URL. if (strpos($uri, '<front>') === 0) { $uri = substr($uri, strlen('<front>')); diff --git a/core/modules/link/tests/src/Unit/Plugin/migrate/process/FieldLinkTest.php b/core/modules/link/tests/src/Unit/Plugin/migrate/process/FieldLinkTest.php index 18456aa86ac9d82938cdfb6275eb3e97bbd910ab..61853410584462eb760de196df3f8284623edfc4 100644 --- a/core/modules/link/tests/src/Unit/Plugin/migrate/process/FieldLinkTest.php +++ b/core/modules/link/tests/src/Unit/Plugin/migrate/process/FieldLinkTest.php @@ -86,6 +86,18 @@ public function canonicalizeUriDataProvider() { 'http://www.example.com/page#links', 'http://www.example.com/page#links', ], + 'empty' => [ + '', + 'route:<nolink>', + ], + 'No link' => [ + '<nolink>', + 'route:<nolink>', + ], + 'none' => [ + '<none>', + 'route:<nolink>', + ], ]; }