sw2eu / hotplug
Requires
- nette/application: ^2.3
- nette/bootstrap: ^2.3
- nette/caching: ^2.3
- nette/finder: ^2.3
This package is not auto-updated.
Last update: 2024-09-14 19:20:04 UTC
README
Nette 没有任何插件或包管理。如果您想将应用程序拆分为多个模块,您可能会使用配置文件的 includes 部分。这个库将帮助您以简单而优雅的方式简化这个问题。
需求
此库需要 PHP 5.4 或更高版本。Hotplug 目前为 Nette 框架 的 2.3 和 2.4 版本设计(更多信息请参阅 发布信息)。
安装
安装此库的最佳方式是使用 Composer
$ composer require sw2eu/hotplug
文档
首先,您将在引导文件中使用 Hotplug 配置器,而不是经典的 Nette\Configurator
$configurator = new Sw2\Hotplug\Configurator;
现在您可以定义您的插件目录。我使用略微不同的结构,但它可以完全配置
$configurator->addPluginDirectory(__DIR__ . '/../src/Plugins'); // place before $configurator->addConfig(...);
Hotplug 配置器将在定义的目录中搜索任何 config/hotplug.neon。例如
src/Plugins/Admin/config/hotplug.neon,src/Plugins/Cms/Page/config/hotplug.neon,- 等等。
此搜索被缓存,因此仅在构建容器时第一次处理。如果您想添加新的插件,您必须手动删除 hotplug 缓存(在文件 temp/cache/_Sw2.Hotplug 中)。
这就是全部!现在您可以定义您的插件。
插件定义
每个插件都必须定义配置文件 hotplug.neon。在此文件中,您的工作方式与任何 Nette 框架配置文件一样(也许您可以阅读 文档中的配置部分)。
您还可以使用变量 %pluginDir% 来定位插件目录中的文件,例如资产。
路由助手
如果您需要为您的插件添加新的路由,这也很简单。Hotplug 已经为这个问题准备好了。在您的应用程序配置中定义主应用程序路由如下
# main application config
services:
router: Sw2\Hotplug\Routers\RouterFactory::createRouter
Hotplug RouterFactory 将搜索任何带有标签 router 的服务。如果您需要确保路由的顺序,只需按字母顺序命名。或者,您可以使用带有排序数字的命名约定,如下所示
# this is in your hotplug.neon
services:
router.999:
class: Nette\Application\Routers\Route
arguments: ['<presenter>/<action>[/<id>]', 'Homepage:default']
autowired: FALSE
tags: [router]
不要忘记将 autowired 设置为 FALSE!如果您需要添加多个路由并且想将它们定义为 RouteList,此库有一个快捷类 Sw2\Hotplug\Routers\RouteList 适用于这种情况
# this is in your hotplug.neon
services:
router.010:
class: Sw2\Hotplug\Routers\RouteList('Admin')
autowired: FALSE
tags: [router]
setup:
- addRoute('admin/sign-in', 'Auth:signIn')
- addRoute('admin/sign-out', 'Auth:signOut')
- add(@otherRouterService)