У меня нет большого опыта работы с Symfony, но я работаю над приложением Symfony 4, которое использует https://github.com/maximilienGilet/notification-bundle Добавление и отображение уведомлений работает хорошо, но я застрял при обработкесобытия, созданные пакетом.
Форма в шаблоне веточки (фактически в моем базовом шаблоне ветки) вызывает действие post markasseen пакета, возвращающее истинное JSON-сообщение, но теперь я не знаю, как вернуться к URL-адресу (маршрут) из которого выполняется почтовый вызов?
Это мой routers.yaml, который "активирует" контроллер пакета:
App\EventListener\NotificationListener:
arguments: ['@router']
tags:
- { name: kernel.event_listener, event: mgilet.notification.seen }
Как вы можете видеть, я пытался передать маршрутизаторпараметр, чтобы увидеть, дает ли это мне возможность «вернуться», но, к сожалению, это не помогло.
Это EventListener, который я создал для обработки события пакета:
<?php
namespace App\EventListener;
use Mgilet\NotificationBundle\Event;
use Mgilet\NotificationBundle\Event\NotificationEvent;
use \Symfony\Bundle\FrameworkBundle\Routing\Router;
use \Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Routing\Exception\ResourceNotFoundException;
class NotificationListener
{
private $router;
public function __construct(Router $router) {
$this->router = $router;
}
public function OnMgiletNotificationSeen(Event\NotificationEvent $event): void {
dd($event);
}
}
Как я уже упоминал, событие перехватывается слушателем, оно возвращает 'true', но я хочу вернуться к маршруту / контроллеру, откуда вызывается действие post.
Это форма в базовом шаблоне (потому что я хочу показать уведомления во всех шаблонах), которая вызывает контроллер уведомлений:
<form action="/notifications/1/mark_as_seen/8" method="post">
<button type="submit" class="close">
<span aria-hidden="true">×</span><span class="sr-only">Close</span>
</button>
</form>
Может кто-нибудь помочь мне?