kebir / menu-generator

简单的菜单生成器

1.3.2 2016-05-31 02:54 UTC

This package is not auto-updated.

Last update: 2024-09-14 15:52:52 UTC


README

Build Status

菜单生成器

安装

通过Composer安装

{
    require: {
        "kebir/menu-generator": "dev-master"
    }
}

用法

<?php

//Given this list of menus
$menus = [
    ["id" => 1, "name" => "Menu 1", "url" => "test.com", "parent_id" => 3],
    ["id" => 2, "name" => "Menu 2", "url" => "test.com", "parent_id" => 0],
    ["id" => 3, "name" => "Menu 3", "url" => "test.com", "parent_id" => 0],
    ["id" => 4, "name" => "Menu 4", "url" => "test.com", "parent_id" => 2],
    ["id" => 5, "name" => "Menu 5", "url" => "test.com", "parent_id" => 3],
    ["id" => 6, "name" => "Menu 6", "url" => "test.com", "parent_id" => 1],
];

//Let's build a hierarchical menus list
$builder = new Kebir\MenuGenerator\Builder();
$menus_generated = $builder->build($menus);

//Check the output
foreach ($menus as $menu) {
    echo $menu->getName() . "-" . $menu->getUrl()."\n";
    foreach ($menu->getElements() as $submenu) {
        echo "--- ".$submenu->getName()."\n";
    }
}
/** output
    Menu 2 - test.com
        --- Menu 4
    Menu 3 - test.com
        --- Menu 1
        --- Menu 5
*/

如果您想显示菜单,该软件包提供了一个HtmlListRenderer类,该类将使用html <ul> 和 <li> 标签来显示菜单。该类需要一个 Kebir\MenuGenerator\Selector\Selector 实例,它负责检测菜单是否应被视为选中。

<?php

$current_url = 'http://test.com/page1';
$simple_selector = new Kebir\MenuGenerator\Selector\SimpleUrlSelector($current_url);
$renderer = new Kebir\MenuGenerator\Renderer\HtmlListRenderer($simple_selector);
echo "<ul>";
foreach ($menus as $menu) {
    $renderer->render($menu);
}
echo "</ul>";

Laravel 用户

该软件包包括一个Service Provider和一个Facade用于Renderer。编辑 app/config/app.php

<?php

  //Add the service provider
  'Kebir\MenuGenerator\MenuGeneratorServiceProvider'
  ...
  //add the facade alias
  'MenuRenderer'    => 'Kebir\MenuGenerator\Facades\Renderer'

要使用它,在blade模板中简单地调用以下内容,例如

{{ MenuRender::render($menu) }}

菜单选择

要将菜单标记为选中,您可以在创建菜单渲染器时使用 Kebir\MenuGenerator\Selector\SimpleUrlSelector 类。

对于Laravel用户,服务提供程序配置为包含 Kebir\MenuGenerator\Selector\LaravelSelector。这将允许您在提供的配置文件中定义当页面到达时应该选中菜单中的哪个条目。

当当前页面不在菜单中但与菜单中的另一个URL相关时,这非常有用。下面是 config/config.php 文件的使用示例

<?php
return array(
   //To link /users/1/edit to another url /users in the menu.
   'linked_urls' => array(
        '/users/1/edit' => '/users'
    ),
    
    //To link an action to an url
    'linked_actions' => array(
        'UsersController@edit' => '/users'
    ),
    
    //To link a route to an url
    'linked_routes' => array(
        'user_edit_path' => '/users'
    )
);