Symfony 4 - Проверьте дату начала и включите подписку - PullRequest
0 голосов
/ 18 марта 2019

У меня в базе данных есть одна таблица «Формирование» с «id, name, start_date, end_date, enabled».Мне бы хотелось, чтобы, когда начальная дата была меньше текущей, установите для «enable» значение 1, а для превышения конечной даты установите значение «enabled» в 0. Для этого я подумал об использовании подписчика.Но я не могу понять, как это работает.

Вот где я нахожусь:

EventSubscriber \ DateFormationSubscriber.php:

namespace App\EventSubscriber;

use App\Entity\Formation;
use App\Event\AppEvent;
use App\Event\FormationEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\EventDispatcher\Event;

class DateFormationSubscriber implements EventSubscriberInterface
{
    private $entityManager;

    public function __construct(EntityManagerInterface $entityManager)
    {
        $this->entityManager = $entityManager;
    }

    public static function getSubscribedEvents()
    {
        return [
            ['checkStartDate', 10],
            ['checkEndDate', 0],
        ];
    }

    public function checkStartDate(FormationEvent $event)
    {
        $tz = new \DateTimeZone('Europe/Paris');
        $datetime = new \DateTime("now", $tz);

        if($event->getStartDate() <= $datetime){
            $this->entityManager->persist($event->setEnabled('1'));
            $this->entityManager->flush();
        }
        else{
            $this->entityManager->persist($event->setEnabled('0'));
            $this->entityManager->flush();
        }
    }

    public function checkEndDate(FormationEvent $event)
    {


    }

}

Event \ FormationEvent.php:

<?php
namespace App\Event;

use App\Entity\Formation;
use Symfony\Component\EventDispatcher\Event;

class FormationEvent  extends Event
{
    private $formation;

    /**
     * @return \App\Entity\Formation
     */
    public function getStartDate(): formation
    {
        return $this->formation->getStartDate();
    }

    /**
     * @return \App\Entity\Formation
     */
    public function getEndDate(): formation
    {
        return $this->formation->getEndDate();
    }

    /**
     * @return \App\Entity\Formation
     */
    public function setEnabled(): formation
    {
        return $this->formation->setEnabled();
    }


}

Даты заносятся в базу данных из формы.Например, в своей форме я создаю формацию «name: test», «date_start: 18/03/2019 09:50» «end_date: 20/03/2019 01:00» «enabled: 0».Я хочу, чтобы start_date был проверен, и «enabled» переходит к «1», потому что дата начала уже прошла и end_date еще не закончена.Затем я хочу, чтобы дата окончания автоматически проверялась «20/03/2019 в 01:00», «включенный» автоматически переходит в «0», когда эта дата прошла

Можете ли вы мне помочь, пожалуйста?

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