thepsion5/menuizer

一个方便创建和渲染菜单模板的包

dev-master 2014-05-20 16:22 UTC

This package is not auto-updated.

Last update: 2024-09-24 07:32:21 UTC


README

Build Status

Coverage Status

安装

thepsion5/menuizer 添加到您的 composer.json 文件中作为需求

{
    "require": {
        "thepsion5/menuizer" : "dev-master"
    }
}

然后运行 composer updatecomposer 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规则
  • classid将被转换为等效的属性规则
  • 任何其他规则都将被解释为路由(如果可用路由提供者)

##高级用法

###命名路由提供者 一些框架提供了命名路由功能,其中给特定的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);

待办事项

  • 实现一个更好的默认配置系统,而不是使用类变量
  • 更多功能
  • 更多文档