Pimcore如何检测保存和发布

时间:2018-10-23 18:28:21

标签: event-handling pimcore-v5

在Pimcore 5下,当用户单击“保存并发布”时,我想做些事情(例如发送电子邮件)。 我如何挂钩该活动?

1 个答案:

答案 0 :(得分:1)

我认为单击保存并发布后不会触发事件。但是,当您保存文档/对象/资产时,更新生命周期就会开始。因此,如果您挂接到preUpdate,则可以检查$ e-> getDocument()-> isPublished(),如果已发布,您将获得实际状态。缺点是,如果它已经发布并且您再次点击它,它也会触发。但是,如果您发送了电子邮件或其他内容,则可以存储标志,并在保存时检查该标志。 (我认为那是我的方式)

希望这会有所帮助。

干杯雷莫

app / config / services.yml

services:
    AppBundle\EventListener\TestListener:
        tags:
            - { name: kernel.event_listener, event: pimcore.asset.preUpdate, method: onPreUpdate }

文件:src / AppBundle / EventListener / TestListener

namespace AppBundle\EventListener;

use Pimcore\Event\Model\ElementEventInterface;
use Pimcore\Event\Model\DataObjectEvent;
use Pimcore\Event\Model\AssetEvent;
use Pimcore\Event\Model\DocumentEvent;

class TestListener {

    public function onPreUpdate (ElementEventInterface $e) {

        if($e instanceof AssetEvent) {
            // do something with the asset
            $foo = $e->getAsset(); 
        } else if ($e instanceof DocumentEvent) {
            // do something with the document
            $foo = $e->getDocument(); 
        } else if ($e instanceof DataObjectEvent) {
            // do something with the object
            $foo = $e->getObject(); 
            $foo->setMyValue(microtime(true));
            // we don't have to call save here as we are in the pre-update event anyway ;-) 
        }
    }
}

您可能会检查$ e-> getAsset()-> isPublished();

发件人:https://pimcore.com/docs/5.x/Development_Documentation/Extending_Pimcore/Event_API_and_Event_Manager.html