Pimcore, как обнаружить сохранить и опубликовать - PullRequest
0 голосов
/ 23 октября 2018

В Pimcore 5 я хотел бы что-то сделать (например, отправить электронное письмо), когда пользователь нажмет «сохранить и опубликовать».Как я могу перехватить это событие?

1 Ответ

0 голосов
/ 15 января 2019

Я не думаю, что событие вызывается при нажатии кнопки «Сохранить и опубликовать».Но когда вы сохраняете документ / объект / актив, запускается жизненный цикл обновления.Поэтому, если вы подключитесь к preUpdate, вы можете проверить наличие $ e-> getDocument () -> isPublished (), и вы получите фактическое состояние, если оно будет опубликовано.Недостатком этого является то, что, если он уже был опубликован, и вы нажмете на него снова, это также сработает.Однако вы можете сохранить флаг, если отправите свое электронное письмо или что-то еще, и проверить его при сохранении.(Я думаю, это было бы так, как я бы это сделал)

Надеюсь, это поможет.

Cheers Remo

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

...