bajzany / adminlte-menu
此包最新版本(v2.0.0)没有可用的许可证信息。
Nette 框架的 AdminLTE 菜单
v2.0.0
2019-07-15 05:35 UTC
Requires
- php: ^7.2
- latte/latte: ^2.4
- nette/application: ^2.4
- nette/bootstrap: ^2.4
- nette/di: ^2.4
- nette/utils: ^2.4
- nettpack/stage: ^1.0
README
安装
Composer
composer require bajzany/adminlte-menu @dev
配置
extensions:
LTEMenu: Bajzany\AdminLTE\DI\AdminLTEMenuExtensions
如何使用
将此菜单注入到您的 basePresenter 中
use MenuTrait;
public function createComponentMenu()
{
$this->menu->setProjectName("PROJECT_NAME");
$this->menu->setProjectShortName("SORT_PROJECT_NAME");
$this->menu->setTranslator("OWN TRANSLATOR");
return $this->menu->createComponent();
}
在模板中渲染
<!DOCTYPE html>
<html>
<head>
</head>
<body class="skin-purple sidebar-mini fixed">
<div class="wrapper">
//SECTION TOP
{control menu:top}
//SECTION LEFT
{control menu:left}
// YOUR CONTENT
<div class="content-wrapper">
{include content}
</div>
</div>
{include @adminTheme/bottom.latte}
</body>
</html>
如果您想使用面包屑,请在您的内容 latte 中使用此功能
{block content}
{control menu:breadcrumb}
添加到菜单列表
创建一个实现了 Bajzany\AdminLTE\BundleMenu 的 php 类 BuildMenu。这个类有一个 build 方法,参数为 Bajzany\AdminLTE\Menu。
#BuildMenu.php
use Bajzany\AdminLTE\BundleMenu;
use Bajzany\AdminLTE\Menu;
use Bajzany\AdminLTE\Panel\TopPanel\ControlItem;
use Bundles\User\Menu\DropDown\IUserDropDown;
use Chomenko\AutoInstall\AutoInstall;
use Chomenko\AutoInstall\Config;
/**
* @Config\Tag({"adminLTE.menu"})
*/
class BuildMenu implements BundleMenu, AutoInstall
{
public function build(Menu $menu)
{
}
}
左侧面板
用于渲染左侧面板项目。
#BuildMenu.php
namespace Bundles\User\Menu;
use Bajzany\AdminLTE\BundleMenu;
use Bajzany\AdminLTE\Menu;
use Bajzany\AdminLTE\Panel\TopPanel\ControlItem;
use Bundles\User\Menu\DropDown\IUserDropDown;
class BuildMenu implements BundleMenu
{
public function build(Menu $menu)
{
$leftPanel = $menu->getLeftPanel();
$userGroup = $leftPanel->createGroup('userGroup');
$userGroup->setTitle('User');
$users = $userGroup->createItem('users');
$users->setLabel('Users');
$users->setIcon('fa fa-users');
$users->createChild('userList')
->setLink('User:default')
->setLabel('List')
->setIcon('fa fa-user');
$users->createChild('userProfile')
->setLink('Profile:default')
->setLabel('Profile')
->setIcon('fa fa-user-circle');
}
}
顶部面板
为了渲染顶部面板项目,您需要一个额外的 Control。
例如,我使用了 UserDropDown。
#BuildMenu.php
namespace Bundles\User\Menu;
use Bajzany\AdminLTE\BundleMenu;
use Bajzany\AdminLTE\Menu;
use Bajzany\AdminLTE\Panel\TopPanel\ControlItem;
use Bundles\User\Menu\DropDown\IUserDropDown;
class BuildMenu implements BundleMenu
{
public function build(Menu $menu)
{
$control = new ControlItem(IUserDropDown::class);
$menu->getTopPanel()->addControl($control);
}
}
UserDropDown.php
UserDropDown 必须扩展 Bajzany\AdminLTE\Panel\TopPanel\ItemControl,该接口有两个重写方法:renderContent 和 renderWrapped。这是您的自定义渲染。
#UserDropDown.php
namespace Bundles\User\Menu\DropDown;
use Bajzany\AdminLTE\Panel\TopPanel\ItemControl;
use Nette\Security\User;
class UserDropDown extends ItemControl
{
/**
* @var User @inject
*/
public $user;
public function renderContent()
{
$this->setDefault();
$this->template->user = $this->user->getIdentity();
$this->template->setFile(__DIR__ . '/userContent.latte');
$this->template->render();
}
public function renderWrapped()
{
$this->setDefault();
$this->template->user = $this->user->getIdentity();
$this->template->setFile(__DIR__ . '/userControlWrapped.latte');
$this->template->render();
}
}
UserDropDown.php 类需要接口工厂
#IUserDropDown.php
namespace Bundles\User\Menu\DropDown;
interface IUserDropDown
{
/**
* @return UserDropDown
*/
public function create(): UserDropDown;
}
用于更改当前面包屑标题
public function renderDefault()
{
$this->changeCurrentBreadcrumbTitle('CUSTOM TITLE');
}