zrnik / menu
S1mple 菜单模型。
v0.0.1
2020-12-26 20:29 UTC
Requires
- nette/component-model: ^3.0
- nette/http: ^3
- nette/utils: ^3
Requires (Dev)
- phpstan/phpstan: ^0.12
- phpunit/phpunit: ^9
This package is auto-updated.
Last update: 2024-09-27 18:11:54 UTC
README
使用此工具可以定义您的菜单,然后将其绘制到某个位置。
它使用 nette/component-model
包。
它包含 2 个类
- Zrnik\Menu\Url - 这是一个
Nettte\Http\Url
,但实现了Nette\ComponentModel\IComponent
。 - Zrnik\Menu\Menu - 这是一个容器(扩展
Nette\ComponentModel\Container
),但进行了修改,使其只能接受Url
或Menu
作为子项。
这两个类都有一个额外的参数和公共属性 $label
。
就这样。
需求
PHP >= 8.0
示例用法
include __DIR__.'/vendor/autoload.php'; /* * Example definition */ $menu = new \Zrnik\Menu\Menu(); $menu->addLink("Home", "/home/"); $menu->addLink("Blog", "/blog/"); $support = $menu->addMenu("Support"); $support->addLink("Contact us!", "/support/contact"); $support->addLink("FAQ", "/support/faq"); /* * Example usage */ function menuItem(\Zrnik\Menu\Menu $menu, int $level = 0) { foreach($menu->getComponents() as $item) { if($item instanceof \Zrnik\Menu\Menu) { echo str_repeat(" ",$level).$item->label.":".PHP_EOL; menuItem($item, $level+1); } if($item instanceof \Zrnik\Menu\Url) { echo str_repeat(" ",$level). sprintf('<a href="%s">%s</a>', $item->getAbsoluteUrl(), $item->label); echo PHP_EOL; } } } menuItem($menu);
结果
<a href="/home/">Home</a> <a href="/blog/">Blog</a> Support: <a href="/support/contact">Contact us!</a> <a href="/support/faq">FAQ</a>