Запустите скрипт php после вставки - PullRequest
0 голосов
/ 25 апреля 2018

Я работаю над приложением, используя шаблоны Symfony 3 и Twig.Я создал формы, используя symfony formBuilder.Мне нужно запускать скрипт php каждый раз, когда в базу данных вставляется строка.В любом случае, я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Во-первых, чтобы запустить скрипт, вы можете использовать Process-компонент Symfony .

Вот пример использования:

$phpBinaryFinder = new PhpExecutableFinder();
$phpBinaryPath = $phpBinaryFinder->find();

$process = new Process("{$phpBinaryPath} worker.php");
$process->run();

Вы должны прочитатьсоответствующий документ для получения дополнительной информации.


Затем вы хотите подключиться после сброса доктрины, а затем использовать прослушиватель событий.Это класс с определенным методом, который вы регистрируете как сервис.

Вам необходимо определить класс:

namespace App\EventListener;

use Doctrine\ORM\Event\PostFlushEventArgs;
use Doctrine\ORM\Event\LifecycleEventArgs;

class YourListener
{
    private $persisted = [];
    public function postPersist(LifecycleEventArgs $args)
    {
        $entity = $args->getEntity();

        if (!$entity instanceof YourRecord) {
            return;
        }

        $this->persisted[] = $entity;
    }

    public function postFlush(PostFlushEventArgs $args)
    {
        foreach ($persisted as $row) {
            // Execute your action for the given row
        }
    }
}

Затем вам нужно зарегистрировать его как сервис:

# services.yaml
services:
    App\EventListener\YourListener:
        tags:
            - { name: doctrine.event_listener, event: postPersist }
            - { name: doctrine.event_listener, event: postFlush }

Проверьте соответствующую документацию: https://symfony.com/doc/current/doctrine/event_listeners_subscribers.html

0 голосов
/ 25 апреля 2018

да, конечно, вы можете использовать события и прослушиватели событий https://symfony.com/doc/current/event_dispatcher.html или прослушиватели событий и подписчики Doctrine https://symfony.com/doc/current/doctrine/event_listeners_subscribers.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...