radekrepka / module-router
模块路由库
1.4.0
2018-12-29 12:29 UTC
Requires
- php: ^5.6 || ^7.0
- kdyby/translation: ~2.5
- nette/di: ~2.4
This package is not auto-updated.
Last update: 2024-09-29 06:31:10 UTC
README
描述
这是一个简单的工具,可以生成菜单、链接和页面的标题。
安装
$ composer require radekrepka/module-router
用法
配置文件为neon格式。
extensions: moduleRouter: RadekRepka\ModuleRouter\DI\ModuleRouterExtension
然后您可以在菜单中添加您的模块和页面。您可以设置菜单项的图标。它可以是任何东西(图像文件的URL,fa图标等)。
config.neon
moduleRouter: modules: Presenter1: Presenter2: Module1: #(Admin, Costumer...) modules: Presenter1: icon: home Presenter2: icon: .... Module2: modules: Presenter1: icon: .... Presenter2: icon: ....
翻译文件(modules.cs_CZ.neon)
您必须创建一个名为modules的翻译文件。
Presenter1: Some page Presenter2: Some page 2 Module1: _name: Module 1 Presenter1: Homepage Presenter2: Settings Module2: _name: Module 2 Presenter1: ...
RouterFactory
<?php namespace App; use Nette; use Nette\Application\Routers\Route; use RadekRepka\ModuleRouter\ModuleManager; class RouterFactory { use Nette\StaticClass; /** * @param ModuleManager $manager * @return Nette\Application\IRouter */ public static function createRouter(ModuleManager $manager) { $router = $manager->getRouter(); $router[] = new Route('[<locale=cs cs|en>/]<presenter>/<action>[/<id>]', 'Homepage:default'); return $router; } }
BasePresenter
/** @var ModuleManager @inject */ public $moduleManager; public function beforeRender() { $modules = $this->moduleManager->getModules(); //Or from module $modules = $this->moduleManager->getModules()->offsetGet('Module1')->getChildren(); $this->template->modules = $modules; $this->template->currentModule = $modules->offsetGet($this->getPresenterName()); } public function getPresenterName() { return explode(':', $this->getName())[1]; }
模板(例如@layout.latte)
<ul> {foreach $modules as $module} {var $active = $presenter->getName() == $module->getFullModule()} <li{if $active} class="active"{/if}> <a n:href="$module->getModule() . ':'"> <img n:if="$module->getIcon()" src="{$basePath}/img/{$module->getIcon()}"> <span>{$module->getName()}</span> </a> </li> {/foreach} </ul> ... <h1>{$currentModule->getName()}</h1>