jorisros/feed-builder-bundle

此捆绑包基于输出通道捆绑包,可以通过发布对象或通过命令行触发。

安装数: 2,242

依赖关系: 0

建议者: 0

安全性: 0

星标: 5

关注者: 3

分支: 3

开放问题: 2

类型:pimcore-bundle

v1.3.5 2019-10-09 13:01 UTC

README

Feedbuilder捆绑包是导出捆绑包,有助于将pimcore的数据导出到其他系统中。

安装

可以通过composer进行安装。

  1. 运行 composer require jorisros/feed-builder-bundle 以接收捆绑包
  2. 启用捆绑包 bin/console pimcore:bundle:enable FeedBuilderBundle 然后运行 ./bin/console pimcore:bundle:enable OutputDataConfigToolkitBundle 因为您需要同时启用这两个捆绑包。
  3. 然后重新加载Pimcore的GUI,在以下位置会出现一个新的菜单项:设置->设置feedbuilder,该界面将配置文件保存在以下位置 var/config/feedbuilder.php

它是如何工作的?

工作方式相当简单,您描述您想要的数据导出方法,这样您就可以得到您想要的数据。这是基于输出通道捆绑包。

事件

我们可以轻松扩展feedbuilder以适应您的情况。以下事件处理器在构建器内部,您可以订阅不同级别的构建过程中的事件。

Flow of the builder

忽略您的feed中的缓存

在开发或测试过程中,您可以忽略feed中的缓存。您可以在composer的run方法中提供一个额外的布尔参数,这样它会在运行查询代码之前清除缓存。在浏览器中,您可以在feed的URL中添加以下GET参数:...name-of-json.json?ignoreCache=true 然后,在运行feedbuilder之前,缓存将被清除。

导出到JSON的示例

创建一个类和一个方法,其中包含写入器。

<?php

namespace FeedBuilderBundle\EventListener;

use FeedBuilderBundle\Event\FeedBuilderEvent;

class ExportExample
{
    const FEED_TITLE = 'Testfeed';

    public function fileHandler(FeedBuilderEvent $event){

        if($event->getConfig()->get('title') === self::FEED_TITLE)
        {
            $arr['products'] = $event->getResult();

            $dir = PIMCORE_SYSTEM_TEMP_DIRECTORY.DIRECTORY_SEPARATOR.'export';

            $name = 'json_export_'.time().'.json';
            if(!file_exists($dir)){
                mkdir($dir);
            }
            file_put_contents($dir.DIRECTORY_SEPARATOR.$name,json_encode($arr, JSON_PRETTY_PRINT));
        }
    }
}

现在我们有一个将json内容写入文件的写入器。现在,在导出运行之后,我们必须连接监听器。我们将在service.yml中这样做。

    FeedBuilderBundle\EventListener\ExportExample:
        tags:
            - { name: kernel.event_listener, event: feedbuilder.after.run, method: fileHandler }