Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
project
drupal
Commits
633b95be
Commit
633b95be
authored
Mar 06, 2017
by
alexpott
Browse files
Issue
#2613694
by gambry, attiks, scott_euser, cilefen: Expose link_type on LinkWidget element
parent
ee17956d
Changes
2
Hide whitespace changes
Inline
Side-by-side
core/modules/link/src/Plugin/Field/FieldWidget/LinkWidget.php
View file @
633b95be
...
...
@@ -175,6 +175,7 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
'#element_validate'
=>
[[
get_called_class
(),
'validateUriElement'
]],
'#maxlength'
=>
2048
,
'#required'
=>
$element
[
'#required'
],
'#link_type'
=>
$this
->
getFieldSetting
(
'link_type'
),
];
// If the field is configured to support internal links, it cannot use the
...
...
core/modules/link/src/Tests/LinkFieldTest.php
View file @
633b95be
...
...
@@ -609,6 +609,49 @@ public function testLinkSeparateFormatter() {
}
}
/**
* Test '#link_type' property exists on 'link_default' widget.
*
* Make sure the 'link_default' widget exposes a '#link_type' property on
* its element. Modules can use it to understand if a text form element is
* a link and also which LinkItemInterface::LINK_* is (EXTERNAL, GENERIC,
* INTERNAL).
*/
public
function
testLinkTypeOnLinkWidget
()
{
$link_type
=
LinkItemInterface
::
LINK_EXTERNAL
;
$field_name
=
Unicode
::
strtolower
(
$this
->
randomMachineName
());
// Create a field with settings to validate.
$this
->
fieldStorage
=
FieldStorageConfig
::
create
([
'field_name'
=>
$field_name
,
'entity_type'
=>
'entity_test'
,
'type'
=>
'link'
,
'cardinality'
=>
1
,
]);
$this
->
fieldStorage
->
save
();
FieldConfig
::
create
([
'field_storage'
=>
$this
->
fieldStorage
,
'label'
=>
'Read more about this entity'
,
'bundle'
=>
'entity_test'
,
'settings'
=>
[
'title'
=>
DRUPAL_OPTIONAL
,
'link_type'
=>
$link_type
,
],
])
->
save
();
$this
->
container
->
get
(
'entity.manager'
)
->
getStorage
(
'entity_form_display'
)
->
load
(
'entity_test.entity_test.default'
)
->
setComponent
(
$field_name
,
[
'type'
=>
'link_default'
,
])
->
save
();
$form
=
\
Drupal
::
service
(
'entity.form_builder'
)
->
getForm
(
EntityTest
::
create
());
$this
->
assertEqual
(
$form
[
$field_name
][
'widget'
][
0
][
'uri'
][
'#link_type'
],
$link_type
);
}
/**
* Renders a test_entity and sets the output in the internal browser.
*
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment