Issue #2231413 by blueminds, tim.plunkett: Link field does not accept a valid path alias.

8.0.x
webchick 2014-04-17 10:15:43 -07:00
parent 6f0f10b2aa
commit 1efd2ad05f
2 changed files with 9 additions and 0 deletions

View File

@ -207,6 +207,12 @@ class LinkWidget extends WidgetBase {
try {
$parsed_url = UrlHelper::parse($value['url']);
// If internal links are supported, look up whether the given value is
// a path alias and store the system path instead.
if ($this->supportsInternalLinks() && !UrlHelper::isExternal($value['url'])) {
$parsed_url['path'] = \Drupal::service('path.alias_manager.cached')->getSystemPath($parsed_url['path']);
}
$url = Url::createFromPath($parsed_url['path']);
$url->setOption('query', $parsed_url['query']);
$url->setOption('fragment', $parsed_url['fragment']);

View File

@ -103,12 +103,15 @@ class LinkFieldTest extends WebTestBase {
$this->assertFieldByName("{$field_name}[0][url]", '', 'Link URL field is displayed');
$this->assertRaw('placeholder="http://example.com"');
// Create a path alias.
\Drupal::service('path.alias_storage')->save('admin', 'a/path/alias');
// Define some valid URLs.
$valid_external_entries = array(
'http://www.example.com/',
);
$valid_internal_entries = array(
'entity_test/add',
'a/path/alias',
);
// Define some invalid URLs.