You are here

MenuOptionsHelper.php in Views Menu Node Children Filter 8

Same filename and directory in other branches
  1. 8.2 src/MenuOptionsHelper.php
  2. 3.0.x src/MenuOptionsHelper.php

File

src/MenuOptionsHelper.php
View source
<?php

namespace Drupal\views_menu_children_filter;

use Drupal\Core\Entity\EntityInterface;
use Drupal\system\Entity\Menu;

/**
 * Provides helper classes for getting an options array of menus
 *
 * @package Drupal\views_menu_children_filter
 */
class MenuOptionsHelper {

  /**
   * Gets an array of all menu names.
   *
   * @return array
   */
  public static function getMenuNames() {
    $menus = [];

    /** @var EntityInterface $menu */
    foreach (Menu::loadMultiple() as $menu) {
      $menus[$menu
        ->id()] = $menu
        ->label();
    }
    asort($menus);
    return $menus;
  }

  /**
   * Gets a list of menus to display as select options.
   *
   * @return array
   */
  public static function getMenuOptions() {
    return [
      '' => t('-- Select menu --'),
    ] + self::getMenuNames();
  }

  /**
   * Gets a select field definition for selecting target menus.
   *
   * @param array $defaultValue
   * @return array
   */
  public static function getSelectField($defaultValue = []) {
    return [
      '#type' => 'select',
      '#title' => t('Target menus'),
      '#description' => t('Select the menu(s) to scan for child entities. If no menu is selected, the first matching menu will be used.'),
      '#multiple' => TRUE,
      '#options' => self::getMenuOptions(),
      '#default_value' => $defaultValue,
    ];
  }

}

Classes

Namesort descending Description
MenuOptionsHelper Provides helper classes for getting an options array of menus