thepsion5 / menuizer
一个方便创建和渲染菜单模板的包
Requires
- php: >=5.3.0
Requires (Dev)
- phpunit/phpunit: 4.0.*
- satooshi/php-coveralls: dev-master
This package is not auto-updated.
Last update: 2024-09-24 07:32:21 UTC
README
安装
将 thepsion5/menuizer
添加到您的 composer.json
文件中作为需求
{ "require": { "thepsion5/menuizer" : "dev-master" } }
然后运行 composer update
或 composer install
###Vanilla PHP Menuizer提供了一个方便的工厂方法来创建服务的新实例
$menuizer = Thepsion5\Menuizer\MenuizerService::create();
###Laravel 首先将Menuizer的服务提供者添加到app/config/app.php
文件中的提供者数组
'providers' => array( // ... 'Thepsion5\Menuizer\Support\Laravel\MenuizerServiceProvider', );
然后,将Menuizer外观添加到同一文件中的别名数组
'aliases' => array( // ... 'Menuizer' => 'Thepsion5\Menuizer\Support\Laravel\Facade' );
您现在可以通过外观访问Menuizer服务的任何函数
Menuizer::render('foo');
基本用法
###创建菜单 菜单属性和行为使用简单、易于阅读的字符串数组定义
$menuizer->define('primary', array( 'url:/|label:Home', 'url:/news|label:News|attributes:class=highlight,id=news', 'url:/about|label:About Us', 'url:/staff|label:Our Team', 'url:/projects|label:Major Projects' ));
define()
函数接受一个菜单名作为第一个参数,以及一个属性数组作为第二个参数。
要渲染定义的菜单,请使用render()
方法
<ul class="navbar navbar-nav"> <?= $menuizer->render('primary'); ?> </ul>
默认情况下,这将生成以下HTML
<ul class="nav navbar-nav"> <li><a href="/" >Home</a></li> <li><a href="/news" class="highlight" id="news">News</a></li> <li><a href="/about" >About Us</a></li> <li><a href="/staff" >Our Team</a></li> <li><a href="/projects" >Major Projects</a></li> </ul>
如果您愿意,也可以通过单个函数调用定义和渲染菜单
<ul class="navbar navbar-nav"> <?= $menuizer->render('primary', array( 'url:/|label:Home', 'url:/news|label:News|attributes:class=highlight,id=news', 'url:/about|label:About Us', 'url:/staff|label:Our Team', 'url:/projects|label:Major Projects' )); ?> </ul>
###Url 生成URL - 此规则或其等效的 快捷键 是使菜单项被视为有效所需的
###Route 使用路由提供者来生成URL
###Label 用于指定要显示在菜单项中的文本
###Attributes 定义除href以外的任何锚标签属性
除了基本语法外,还有一些快捷方式,可以使您更简洁地定义规则
- 以
#
、/
或?
开头的任何规则都将被解释为URL规则 class
和id
将被转换为等效的属性规则- 任何其他规则都将被解释为路由(如果可用路由提供者)
##高级用法
###命名路由提供者 一些框架提供了命名路由功能,其中给特定的URL模式一个别名,以便更容易组织路由。Menuizer提供了一种将此功能集成到其URL生成中的方法。
当与Laravel一起使用此包时,此功能会自动提供。您还可以通过创建自己的RouteProviderInterface.php实现来启用此功能。
然后,您可以将实现的一个实例传递给MenuizerService::create()
函数
$menuizer = Thepsion5\Menuizer\MenuizerService::create(new FooRouteProvider);
##创建菜单和菜单项对象 您可以完全绕过Menuizer服务类,使用传统的OOP语法创建菜单实例
use Thepsion5\Menuizer\Menu; use Thepsion5\Menuizer\MenuItem; $items = array( new MenuItem('/', 'Home', array('class' => 'nav', 'id' => 'home')), new MenuItem('/about', 'About Us', array('class' => 'nav')), new MenuItem('contact', 'Contact Us', array('class' => 'nav')) ); $menu = new Menu('foo', $items);
您还可以通过getRepository()
方法保存服务类外创建的菜单实例
$menuizer->getRepository()->save($menu);
待办事项
- 实现一个更好的默认配置系统,而不是使用类变量
- 更多功能
- 更多文档