Я реализовал класс EventListener и объявил его в services.yaml. Я хотел бы вернуть своему Контроллеру переменную при сохранении объекта и отправить эту переменную в шаблон веточки. Я хочу показать форму шага в моем представлении, показывающую имя объекта зеленым цветом, например, когда данные сохраняются в базе данных. Если это сработает, я буду использовать тот же процесс в другом контроллере, где я сохраню несколько сущностей. Подводя итог: как уведомить контроллер о том, что указанный c объект был сохранен, передав переменную?
Eventlistener
<?php
namespace App\EventListener;
use Doctrine\Common\Persistence\Event\LifecycleEventArgs;
use App\Entity\Article;
class TodoListener {
public function postPersist(LifecycleEventArgs $args) {
$entity = $args->getObject();
if(!$entity instanceof Article)
return;
$var = 'foo';
return $var;
}
}
services.yaml
App\EventListener\TodoListener:
tags:
- { name: doctrine.event_listener, event: postPersist }
Контроллер
/**
* @Route("/blog/new", name="blog_create")
* @Route("/blog/{id}/edit", name="blog_edit")
*/
public function form(Article $article = null, Request $request, ObjectManager $manager)
{
if (!$article) {
$article = new Article();
}
$form = $this->createForm(ArticleType::class, $article);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
if (!$article->getId()) {
$article->setCreatedAt(new \dateTime());
}
$manager->persist($article);
$manager->flush();
/**
* Get back variable when entity is persisted ???
*/
return $this->redirectToRoute('blog_show', ['id' => $article->getId()]);
}
return $this->render('blog/create.html.twig', [
'formArticle' => $form->createView(),
'editMode' => $article->getId() !== null
]);
}