lukesnowden / menu
为Laravel 4提供轻松构建菜单
1.4.1
2018-10-15 09:52 UTC
Requires
- php: >=5.3.0
README
有关更多信息和建议功能请求,请访问http://luke.sno.wden.co.uk/menu。
用法
从数据库数据(id,父id)构建菜单的非常简单的方法,服务提供者注册方法用于应用程序模块等。
独立
use LukeSnowden\Menu\Menu; include __DIR__ . '/vendor/autoload.php';
示例 1
<?php Menu::addItem( array( 'text' => 'Home', 'URL' => '/', 'reference' => '0' ) ); echo Menu::render(); ?>
##示例 2 - 嵌套子菜单
<?php Menu::addItem( array( 'text' => 'Services', 'URL' => '/services/', 'reference' => '1', 'parent' => '0' ) ); echo Menu::render(); ?>
示例 3 - 多个菜单
<?php Menu::addItem( array( 'text' => 'Services', 'URL' => '/services/', 'reference' => '1', 'parent' => '0' ) )->toMenu( 'main' ); echo Menu::render( 'main' ); ?>
自动类
我已经添加了一些用于样式化菜单的最常用和必需的类。
.first-item {} .last-item {} .current-root {} .current-parent {} .current-ancestor {} .has-children {}
输出
<?php Menu::addItem( array( 'text' => 'Home', 'URL' => '/menu-test-2/public/', 'reference' => '1', 'class' => 'home-icon', 'weight' => 0 ) )->toMenu( 'main' ); Menu::addItem( array( 'text' => 'Services', 'URL' => '/menu-test-2/public/services/', 'reference' => '2' ) )->toMenu( 'main' ); Menu::addItem( array( 'text' => 'Development', 'URL' => '/menu-test-2/public/services/development/', 'reference' => '3', 'parent' => '2' ) )->toMenu( 'main' ); Menu::addItem( array( 'text' => 'Design', 'URL' => '/menu-test-2/public/services/design/', 'reference' => '4', 'parent' => '2', 'weight' => 0 ) )->toMenu( 'main' ); echo Menu::render( 'main' ); ?>
<ul class="nav-main"> <li class="home-icon current first-item container node-1"> <a href="/menu-test-2/public/">Home</a> </li> <li class=" has-children last-item container node-1"> <a href="/menu-test-2/public/services/">Services</a> <ul> <li class=" first-item nav-node node-2"> <a href="/menu-test-2/public/services/design/">Design</a> </li> <li class=" last-item nav-node node-2"> <a href="/menu-test-2/public/services/development/">Development</a> </li> </ul> </li> </ul>
自定义属性
$name = false, $attributes = array(), $htmlTag = 'ul'
echo Menu::render( 'main', array( 'class' => 'nav nav-pills nav-stacked', 'role' => 'tablist' ), 'nav' );
自定义布局渲染
您可能想更改输出布局(包含演示渲染类)
Menu::addItem( array( 'text' => 'Home', 'URL' => '/menu-test-2/public/', 'reference' => '1', 'class' => 'home-icon', 'weight' => 0 ) )->toMenu( 'main' ); Menu::addItem( array( 'text' => 'Services', 'URL' => '/menu-test-2/public/services/', 'reference' => '2' ) )->toMenu( 'main' ); Menu::addItem( array( 'text' => 'Development', 'URL' => '/menu-test-2/public/services/development/', 'reference' => '3', 'parent' => '2' ) )->toMenu( 'main' ); Menu::addItem( array( 'text' => 'Design', 'URL' => '/menu-test-2/public/services/design/', 'reference' => '4', 'parent' => '2', 'weight' => 0 ) )->toMenu( 'main' ); Menu::setMenuType( 'horizontal', 'main', 'LukeSnowden\Menu\Styles' ); echo Menu::render( 'main' );
通过L4模型使用第三方菜单UI
(请注意,这只是一个如果您的导航和导航项有2个表(和模型)以及标准的hasMany()关系将如何工作的概括总结)
<?php $navigation = Navigation::with( 'navigationItems' )->where( 'navigation_slug', '=', 'main' )->get(); foreach( $navigation->navigationItems as $item ) { Menu::addItem( array( 'text' => , $item->name 'URL' => $item->url, 'reference' => $item->id, 'parent' => $item->parent_id, 'weight' => $item->order ) )->toMenu( $navigation->navigation_slug ); } echo Menu::render( $navigation->navigation_slug ); ?>
Laravel安装
将以下内容添加到您的应用程序的composer.json文件中
composer require lukesnowden/menu:dev-master
将以下内容添加到您的/app/config/app.php的provider数组中。
'LukeSnowden\Menu\MenuServiceProvider'
将以下内容添加到您的/app/config/app.php的aliases数组中。
'Menu' => 'LukeSnowden\Menu\Facades\Menu'
最后回到您的终端并运行
php composer.phar dump-autoload