Suramenu菜单。
1.2.1
2021-02-28 09:38 UTC
Requires (Dev)
- phpunit/phpunit: ^9.2
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