Overview

Namespaces

  • Charcoal
    • Ui
      • Dashboard
      • Form
      • FormGroup
      • FormInput
      • Layout
      • Menu
      • MenuItem
      • ServiceProvider

Classes

  • Charcoal\Ui\AbstractUiItem
  • Charcoal\Ui\Dashboard\AbstractDashboard
  • Charcoal\Ui\Dashboard\DashboardBuilder
  • Charcoal\Ui\Dashboard\DashboardConfig
  • Charcoal\Ui\Dashboard\FormInputConfig
  • Charcoal\Ui\Dashboard\GenericDashboard
  • Charcoal\Ui\Form\AbstractForm
  • Charcoal\Ui\Form\FormBuilder
  • Charcoal\Ui\Form\FormConfig
  • Charcoal\Ui\Form\GenericForm
  • Charcoal\Ui\FormGroup\AbstractFormGroup
  • Charcoal\Ui\FormGroup\FormGroupConfig
  • Charcoal\Ui\FormGroup\GenericFormGroup
  • Charcoal\Ui\FormInput\AbstractFormInput
  • Charcoal\Ui\FormInput\FormInputBuilder
  • Charcoal\Ui\FormInput\GenericFormInput
  • Charcoal\Ui\Layout\AbstractLayout
  • Charcoal\Ui\Layout\GenericLayout
  • Charcoal\Ui\Layout\LayoutBuilder
  • Charcoal\Ui\Layout\LayoutConfig
  • Charcoal\Ui\Layout\LayoutFactory
  • Charcoal\Ui\Menu\AbstractMenu
  • Charcoal\Ui\Menu\GenericMenu
  • Charcoal\Ui\Menu\MenuBuilder
  • Charcoal\Ui\Menu\MenuConfig
  • Charcoal\Ui\Menu\MenuFactory
  • Charcoal\Ui\MenuItem\AbstractMenuItem
  • Charcoal\Ui\MenuItem\GenericMenuItem
  • Charcoal\Ui\MenuItem\MenuItemBuilder
  • Charcoal\Ui\MenuItem\MenuItemConfig
  • Charcoal\Ui\MenuItem\MenuItemFactory
  • Charcoal\Ui\ServiceProvider\DashboardServiceProvider
  • Charcoal\Ui\ServiceProvider\FormServiceProvider
  • Charcoal\Ui\ServiceProvider\LayoutServiceProvider
  • Charcoal\Ui\ServiceProvider\MenuServiceProvider
  • Charcoal\Ui\ServiceProvider\UiServiceProvider
  • Charcoal\Ui\UiItemConfig

Interfaces

  • Charcoal\Ui\Dashboard\DashboardInterface
  • Charcoal\Ui\Form\FormInterface
  • Charcoal\Ui\FormGroup\FormGroupInterface
  • Charcoal\Ui\FormInput\FormInputInterface
  • Charcoal\Ui\Layout\LayoutAwareInterface
  • Charcoal\Ui\Layout\LayoutInterface
  • Charcoal\Ui\Menu\MenuInterface
  • Charcoal\Ui\MenuItem\MenuItemInterface
  • Charcoal\Ui\UiGroupingInterface
  • Charcoal\Ui\UiItemInterface

Traits

  • Charcoal\Ui\Dashboard\DashboardTrait
  • Charcoal\Ui\Form\FormTrait
  • Charcoal\Ui\FormGroup\FormGroupTrait
  • Charcoal\Ui\Layout\LayoutAwareTrait
  • Charcoal\Ui\Layout\LayoutTrait
  • Charcoal\Ui\UiGroupingTrait
  • Charcoal\Ui\UiItemTrait
  • Overview
  • Namespace
  • Class
 1: <?php
 2: 
 3: namespace Charcoal\Ui\Menu;
 4: 
 5: use \Pimple\Container;
 6: 
 7: // From 'charcoal-factory'
 8: use \Charcoal\Factory\FactoryInterface;
 9: 
10: /**
11:  * Menu Builder
12:  */
13: class MenuBuilder
14: {
15:     /**
16:      * The default, concrete, menu model.
17:      *
18:      * @const string
19:      */
20:     const DEFAULT_TYPE = 'charcoal/ui/menu/generic';
21: 
22:     /**
23:      * Store the menu factory instance.
24:      *
25:      * @var FactoryInterface
26:      */
27:     protected $factory;
28: 
29:     /**
30:      * Store the dependency-injection container to fulfill the required services.
31:      *
32:      * @var Container $container
33:      */
34:     protected $container;
35: 
36:     /**
37:      * Return a new menu builder.
38:      *
39:      * @param FactoryInterface $factory   A menu factory.
40:      * @param Container        $container The DI container.
41:      */
42:     public function __construct(FactoryInterface $factory, Container $container)
43:     {
44:         $this->factory   = $factory;
45:         $this->container = $container;
46:     }
47: 
48:     /**
49:      * Build and return a new menu.
50:      *
51:      * @param  array|\ArrayAccess $options The menu build options.
52:      * @return MenuInterface
53:      */
54:     public function build($options)
55:     {
56:         $container = $this->container;
57:         $objType = isset($options['type']) ? $options['type'] : self::DEFAULT_TYPE;
58: 
59:         $obj = $this->factory->create($objType, [
60:             'logger'            => $container['logger'],
61:             'view'              => $container['view'],
62:             'menu_item_builder' => $container['menu/item/builder'],
63:             'container'         => $container
64:         ]);
65:         $obj->setData($options);
66: 
67:         return $obj;
68:     }
69: }
70: 
API documentation generated by ApiGen