MenuReferenceFormatter.php in Menu Reference Render (Formatter) 8
File
src/Plugin/Field/FieldFormatter/MenuReferenceFormatter.php
View source
<?php
namespace Drupal\menu_reference_render\Plugin\Field\FieldFormatter;
use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Core\Field\Plugin\Field\FieldFormatter\EntityReferenceFormatterBase;
use Drupal\Core\Field\FieldDefinitionInterface;
class MenuReferenceFormatter extends EntityReferenceFormatterBase {
public function viewElements(FieldItemListInterface $items, $langcode) {
$elements = [];
foreach ($this
->getEntitiesToView($items, $langcode) as $entity) {
$menu_name = $entity
->get('id');
$menu_tree = \Drupal::menuTree();
$parameters = $menu_tree
->getCurrentRouteMenuTreeParameters($menu_name);
$tree = $menu_tree
->load($menu_name, $parameters);
$manipulators = [
[
'callable' => 'menu.default_tree_manipulators:checkNodeAccess',
],
[
'callable' => 'menu.default_tree_manipulators:checkAccess',
],
[
'callable' => 'menu.default_tree_manipulators:generateIndexAndSort',
],
];
$tree = $menu_tree
->transform($tree, $manipulators);
$elements[] = $menu_tree
->build($tree);
}
return $elements;
}
public static function isApplicable(FieldDefinitionInterface $field_definition) {
return $field_definition
->getFieldStorageDefinition()
->getSetting('target_type') == 'menu';
}
}