Suramenu菜单。

1.2.1 2021-02-28 09:38 UTC

This package is auto-updated.

Last update: 2024-09-10 02:59:48 UTC


README

菜单生成器

代码 sura/menu 该包提供了一个流畅的接口,在您的PHP应用程序中构建任何大小的菜单。

人类可读的流畅接口

所有类都提供人类可读的流畅接口(无数组配置)。此外,您可以选择更详尽、更灵活的语法,或者选择覆盖大多数用例的便利方法。

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

// Or just...
Menu::new()
    ->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>

或更程序化的方法

菜单也可以通过类似reduce的可调用函数创建。

$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>

对HTML输出的强控制

您可以程序化地向菜单中的任何项目或菜单本身添加HTML类和属性。

Menu::new()
    ->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

不怕深度

该菜单支持子菜单,而这些子菜单又可以无限嵌套。

Menu::new()
    ->link('/', 'Home')
    ->submenu('More', Menu::new()
        ->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>

安装

您可以通过composer安装此包

composer require sura/menu