bootiq/cms-api-vendor-nette-2.3

B!Q CMS API 供应商 - nette 实现

01.00.00 2018-02-27 14:41 UTC

This package is not auto-updated.

Last update: 2024-09-19 11:40:51 UTC


README

BOOT!Q Logo

pipeline status coverage report

安装

要安装 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;
    }