2017 © Pedro Peláez
 

library menu

Html menu generator

image

hoangphison/menu

Html menu generator

  • Monday, November 27, 2017
  • by hoangphison
  • Repository
  • 0 Watchers
  • 0 Stars
  • 27 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 42 Forks
  • 0 Open issues
  • 5 Versions
  • 0 % Grown

The README.md

Html Menu Generator

Build Status StyleCI, (*1)

The hoangphison/menu package provides a fluent interface to build menus of any size in your php application. If you're building your app with Laravel, the hoangphison/laravel-menu provides some extra treats., (*2)

Documentation is available at https://docs.spatie.be/menu., (*3)

Upgrading from version 1? There's a guide for that!, (*4)

Human Readable, Fluent Interface

All classes provide a human readable, fluent interface (no array configuration). Additionally, you can opt for a more verbose and flexible syntax, or for convenience methods that cover most use cases., (*5)

Menu::newMenu()
    ->add(Link::to('/', 'Home'))
    ->add(Link::to('/about', 'About'))
    ->add(Link::to('/contact', 'Contact'))
    ->add(Html::empty())
    ->render();

// Or just...
Menu::newMenu()
    ->link('/', 'Home')
    ->link('/about', 'About')
    ->link('/contact', 'Contact')
    ->empty()
<ul>
    <li><a href="/">Home</a></li>
    <li><a href="/about">About</a></li>
    <li><a href="/contact">Contact</a></li>
    <li></li>
</ul>

Or a More Programmatic Approach

Menus can also be created through a reduce-like callable., (*6)

$pages = [
    '/' => 'Home',
    '/about' => 'About',
    '/contact' => 'Contact',
];

Menu::build($pages, function ($menu, $label, $url) {
    $menu->add($url, $label);
})->render();
<ul>
    <li><a href="/">Home</a></li>
    <li><a href="/about">About</a></li>
    <li><a href="/contact">Contact</a></li>
</ul>

Strong Control Over the Html Output

You can programatically add html classes and attributes to any item in the menu, or to the menu itself., (*7)

Menu::newMenu()
    ->addClass('navigation')
    ->add(Link::to('/', 'Home')->addClass('home-link'))
    ->add(Link::to('/about', 'About'))
    ->add(Link::to('/contact', 'Contact')->addParentClass('float-right'))
    ->wrap('div.wrapper')
<div class="wrapper">
    <ul class="navigation">
        <li><a href="/" class="home-link">Home</a></li>
        <li><a href="/about">About</a></li>
        <li class="float-right"><a href="/contact">Contact</a></li>
    </ul>
</div

Not Afraid of Depths

The menu supports submenus, which in turn can be nested infinitely., (*8)

Menu::newMenu()
    ->link('/', 'Home')
    ->submenu('More', Menu::newMenu()
        ->addClass('submenu')
        ->link('/about', 'About'))
        ->link('/contact', 'Contact'))
    );
<ul>
    <li><a href="/">Home</a></li>
    <li>
        More
        <ul class="submenu">
            <li><a href="/about">About</a></li>
            <li><a href="/contact">Contact</a></li>
        </ul>
    </li>
</ul>

Some Extra Treats for Laravel Apps

The Laravel version of the menu package adds some extras like convenience methods for generating URLs and macros., (*9)

Menu::macro('main', function () {
    return Menu::new()
        ->action('HomeController@index', 'Home')
        ->action('AboutController@index', 'About')
        ->action('ContactController@index', 'Contact')
        ->setActiveFromRequest();
});
<nav class="navigation">
    {{ Menu::main() }}
</nav>

Spatie is a webdesign agency based in Antwerp, Belgium. You'll find an overview of all our open source projects on our website., (*10)

Install

You can install the package via composer:, (*11)

``` bash $ composer require hoangphison/menu, (*12)


## Usage Documentation is available at https://docs.spatie.be/menu. ## Upgrading to 2.0 Upgrading to 2.0 should be pretty painless for most use cases. ### If you're just building menus... - The `void` and `voidIf` have been removed. These can be replaced by `html` and `htmlIf`, with empty strings as their first arguments - The `prefixLinks` and `prefixUrls` methods have been removed because they were too unpredictable in some case. There currently isn't an alternative for these, besides writing your own logic and applying it with `applyToAll`. ### If you're using custom `Item` implementations... - The `HtmlAttributes` and `ParentAttributes` traits have been renamed to `HasHtmlAttributes` and `HasParentAttributes`. - The `HasUrl` interface and trait has been removed. Url-related methods now also are part of the `Activatable` interface and trait. ### New features... - Added the static `Menu::build` and non-static `Menu::fill` methods to create menu's from arrays. - The `setActive` method on `Activatable` now also accepts a non-strict boolean or callable parameter to set `$active` to true or false. - `Menu::html` and `Menu::htmlIf` now accept a `$parentAttributes` array as their second arguments. ## Changelog Please see [CHANGELOG](CHANGELOG.md) for more information what has changed recently. ## Testing ``` bash $ phpunit

Contributing

Please see CONTRIBUTING for details., (*13)

Security

If you discover any security related issues, please email freek@spatie.be instead of using the issue tracker., (*14)

Postcardware

You're free to use this package, but if it makes it to your production environment we highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using., (*15)

Our address is: Spatie, Samberstraat 69D, 2060 Antwerp, Belgium., (*16)

We publish all received postcards on our company website., (*17)

Credits

Support us

Spatie is a webdesign agency based in Antwerp, Belgium. You'll find an overview of all our open source projects on our website., (*18)

Does your business depend on our contributions? Reach out and support us on Patreon. All pledges will be dedicated to allocating workforce on maintenance and new awesome stuff., (*19)

License

The MIT License (MIT). Please see License File for more information., (*20)

The Versions

27/11 2017

dev-master

9999999-dev https://github.com/hoangphison/menu

Html menu generator

  Sources   Download

MIT

The Requires

 

The Development Requires

navigation menu spatie hoangphison

27/11 2017

1.0.0

1.0.0.0 https://github.com/hoangphison/menu

Html menu generator

  Sources   Download

MIT

The Requires

 

The Development Requires

navigation menu spatie hoangphison

27/11 2017

dev-develop

dev-develop https://github.com/hoangphison/menu

Html menu generator

  Sources   Download

MIT

The Requires

 

The Development Requires

navigation menu spatie hoangphison

27/11 2017

dev-feature/php5.6-compatibility

dev-feature/php5.6-compatibility https://github.com/hoangphison/menu

Html menu generator

  Sources   Download

MIT

The Requires

 

The Development Requires

navigation menu spatie hoangphison

07/03 2017

dev-analysis-qgZPnQ

dev-analysis-qgZPnQ https://github.com/spatie/menu

Html menu generator

  Sources   Download

MIT

The Requires

 

The Development Requires

navigation menu spatie