谜石 / 布鲁克端口
一个用于将端口配置组合在一起的 Laminas 模块,例如公共端口、管理端口等。
v3.1.0
2021-01-17 13:50 UTC
Requires
- php: ^7.2|^8.0
- container-interop/container-interop: ^1.2
- laminas/laminas-component-installer: ^1.0 || ^2.1
- laminas/laminas-config: ^3.3
- laminas/laminas-modulemanager: ^2.8
- laminas/laminas-servicemanager: ^3.4
Requires (Dev)
- phpunit/phpunit: ^8.4
README
一个用于将端口配置组合在一起的 Laminas 模块,例如公共端口、管理端口等。
添加配置
要添加有关端口的详细信息,请将其添加到 portals.{portal_name}
下的模块配置文件中。
return [ 'portals' => [ 'main' => [ 'layout' => 'main.layout', 'css' => [ __DIR__ . '/../css/styles.css', ], 'js' => [ __DIR__ . '/../js/scripts.js', ], ], ], ];
端口还支持通过 PortalConfigProviders 进行懒加载配置。
return [ 'portal_manager' => [ 'provider_names' => [ 'My\\Portal\\Config\\Provider', ], 'factories' => [ 'My\\Portal\\Config\\Provider' => 'My\\Portal\\Config\\ProviderFactory', ], ], ];
端口功能
功能允许您将端口配置组合在一起,并分别分配给不同的端口。如果某些模块化功能需要多个 CSS/JS 文件,但模块不知道它将在哪些端口中使用,这可能很有用。
return [ 'portals' => [ 'main' => [ 'features' => [ 'some-functionality', ], ], ], 'portal_features' => [ 'some-functionality' => [ 'css' => [ __DIR__ . '/../css/styles.css', ], 'js' => [ __DIR__ . '/../js/scripts.js', ], ], ], ];
在此,模块可以定义 portal_features/some-functionality 所需的 JS 和 CSS,而项目可以声明 portals/main 使用它。
获取端口管理器
/** @var \Laminas\ServiceManager\ServiceManager $serviceManager */ $portalManager = $serviceManager->get(\Riddlestone\Brokkr\Portals\PortalManager::class);
获取配置
/** @var \Riddlestone\Brokkr\Portals\PortalManager $portalManager */ # get a list of portals $portals = $portalManager->getPortalNames(); # set the current portal $portalManager->setCurrentPortalName('main'); # get the current portal name $portalName = $portalManager->getCurrentPortalName(); # check a portal has config $hasConfig = $portalManager->hasPortalConfig('main', 'css'); # check the current portal has config $hasConfig = $portalManager->hasCurrentPortalConfig('css'); # get the config for a portal $portalConfig = $portalManager->getPortalConfig('main', 'css'); # get the config for the current portal $portalConfig = $portalManager->getCurrentPortalConfig('css');