public function MenuLinkField::updateLink in Menu Link (Field) 2.0.x
Same name and namespace in other branches
- 8 src/Plugin/Menu/MenuLinkField.php \Drupal\menu_link\Plugin\Menu\MenuLinkField::updateLink()
Updates the definition values for a menu link.
Depending on the implementation details of the class, not all definition values may be changed. For example, changes to the title of a static link will be discarded.
In general, this method should not be called directly, but will be called automatically from MenuLinkManagerInterface::updateDefinition().
Parameters
array $new_definition_values: The new values for the link definition. This will usually be just a subset of the plugin definition.
bool $persist: TRUE to have the link persist the changed values to any additional storage.
Return value
array The plugin definition incorporating any allowed changes.
Overrides MenuLinkInterface::updateLink
File
- src/
Plugin/ Menu/ MenuLinkField.php, line 150
Class
- MenuLinkField
- Provides a menu link plugin for field-based menu links.
Namespace
Drupal\menu_link\Plugin\MenuCode
public function updateLink(array $new_definition_values, $persist) {
$field_name = $this
->getFieldName();
$this->pluginDefinition = $new_definition_values + $this
->getPluginDefinition();
if ($persist) {
$updated = [];
foreach ($new_definition_values as $key => $value) {
$field = $this
->getEntity()->{$field_name};
if (isset($field->{$key})) {
$field->{$key} = $value;
$updated[] = $key;
}
}
if ($updated) {
$entity = $this
->getEntity();
$entity
->setSyncing(TRUE);
$entity
->isDefaultRevision(TRUE);
$entity
->save();
}
}
return $this->pluginDefinition;
}