bootiq / cms-api-vendor-nette-2.3
B!Q CMS API 供应商 - nette 实现
01.00.00
2018-02-27 14:41 UTC
Requires
- php: ^7.0
- bootiq/cms-api-vendor: ^00.01
- latte/latte: ^2.3
- nette/application: ^2.3
- nette/di: ^2.3
- nette/finder: ^2.3
- nette/utils: ^2.3
Requires (Dev)
- jakub-onderka/php-console-highlighter: ^0.3.2
- jakub-onderka/php-parallel-lint: ^0.9.2
- phpmd/phpmd: ^2.6
- phpstan/phpstan: ^0.8.5
- phpunit/phpunit: ^6.3
- sebastian/phpcpd: ^3.0
- slevomat/coding-standard: ^4.0
- squizlabs/php_codesniffer: ^3.1
This package is not auto-updated.
Last update: 2024-09-19 11:40:51 UTC
README
安装
要安装 Boot!Q CMS API 供应商 for Nette,请使用 composer
composer require bootiq/cms-api-vendor-nette-2.3
配置
将 Boot!Q CMS API 供应商 for Nette 添加到您的扩展中
extensions: - BootIq\CmsApiVendor\Nette\DI\CmsApiVendorExtension
通过定义 biq_cms_adapter 到服务配置中注册适配器进行通信
services: biq_cms_adapter: class: BootIq\CmsApiVendor\Adapter\GuzzleSecurityTokenAdapter(GuzzleHttp\Client(), BootIq\CmsApiVendor\Response\ResponseFactory(), %cms_api.urn%, %cms_api.publicId%, %cms_api.secret%)
最后定义配置参数(名称在适配器定义中使用)
parameters: cms_api: urn: "<cms.example.com/api>" publicId: "<public ID>" secret: "<secret>"
使用
将 PageControlFactory 注入到您的 Presenter 中,并创建 PageControl 组件。例如
/** * @var PageControlFactory * @inject */ public $pageControlFactory; /** * @return PageControl */ public function createComponentPageControl(): PageControl { $control = $this->pageControlFactory->create(); return $control; }
现在在您的 latte 模板中使用 PageControl 组件
{block content} <div id="banner"> <h1 n:block=title>Congratulations!</h1> </div> <div id="content"> <h2>You have successfully using Boot!Q CMS API vendor for Nette.</h2> <p> {control pageControl "/hello-workld-slug", false} </p> </div> {/block}
修改
回退
如果没有渲染任何内容,将触发回调 onNotRendered($mixed)。如果其中一个块未渲染,将触发回调 onBlockNotRendered(Block $block, \Exception $exception)。以下是我们回调的使用示例。
/** * @var PageControlFactory * @inject */ public $pageControlFactory; /** * @return PageControl */ public function createComponentPageControl(): PageControl { $control = $this->pageControlFactory->create(); $control->onNotRendered[] = function ($exception) { // DO SOMETHING WITH EXCEPTION }; $control->onBlockNotRendered[] = function ($block, $exception) { // DO SOMETHING WITH BLOCK OR EXCEPTION }; return $control; }
自定义 BlockControl
如果您想使用自己的 BlockControl,只需创建一个新的 Control,该 Control 实现 BootIq\CmsApiVendor\Nette\Control\Block\BlockControlInterface。然后将其注册到 PageControl 的 createComponent 方法中
/** * @var PageControlFactory * @inject */ public $pageControlFactory; /** * @return PageControl */ public function createComponentPageControl(): PageControl { $control = $this->pageControlFactory->create(); $myOwnBlockControl = new MyOwnBlockControl(); $control->addBlockControlByType($myOwnBlockControl, 'myOwnBlockType'); return $control; }
记录器
如果您想在我们的 PageControl 中记录正在发生的事情,只需在 createComponent 方法中将记录器设置为 PageControl。记录器必须实现 PSR-3 LoggerInterface。例如
/** * @var PageControlFactory * @inject */ public $pageControlFactory; /** * @var LoggerInterface * @inject */ public $monologLogger; /** * @return PageControl */ public function createComponentPageControl(): PageControl { $control = $this->pageControlFactory->create(); $control->setLogger($this->monologLogger); return $control; }