je suis sur un problème assez agaçant depuis ce matin :( En effet j'en suis à la parti des souscripteur d'événement du tuto de symfony 3 présent sur openclassroom, et pensant avoir tout fait correctement je me retrouve avec une erreur assez inattendu, mais bon je sais que ça va êtres résolu !
Cependant j'ai besoin de votre aide si vous acceptez svp
j'ai donc tenté de mettre une priorité d'exécution sur une fonction d'un événement, le tout dans la fonction getSubscribedEvents du souscripteur d'événement (comme indiqué sur le tuto et dans la doc symfony).
L'erreur qui est généré est "ContextErrorException Notice: Undefined offset: 0" déclenché depuis le lancement de n'importe quel page.
Code ci-dessous ==>
<?php
// src/OC/PlatformBundle/Bigbrother/MessageListener.php
namespace OC\PlatformBundle\Bigbrother;
use OC\PlatformBundle\Event\MessagePostEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use OC\PlatformBundle\Event\PlatformEvents;
// Pour écouter plusieurs événement en même temps add l'interface EventSubscriberInterface
class MessageListener implements EventSubscriberInterface
{
protected $notificator;
protected $listUsers = array();
public function __construct( MessageNotificator $notificator, $listUsers)
{
$this->notificator = $notificator;
$this->listUsers = $listUsers;
}
// Obligatoirement défini en static
static public function getSubscribedEvents()
{
// On place ici à processMessage une priorité de 2, 0 le par défaut. Plus la prio est haute plus l'exécution est tôt !
//Valeur négative possible, et donc exec plus tard que les val pos
return array(
PlatformEvents::POST_MESSAGE => array("processMessage" => 2),
//PlatformEvents::POST_MESSAGE => "processMessage",
//PlatformEvents::AUTRE_EVENEMENT => 'autreMethode',
// ...
);
}
public function processMessage(MessagePostEvent $event)
{
if(in_array($event->getUser()->getUsername(), $this->listUsers)){
$this->notificator->notifyByEmail($event->getMessage(),$event->getUser());
}
}
// public function autreMethodee()
// {
//
// }
}
Et voici la déclaration du service en .yml ==>
oc_platform.bigbrother.message_listener:
class: OC\PlatformBundle\Bigbrother\MessageListener
arguments:
- "@oc_platform.bigbrother.message_notificator"
- ["alexandre", "marine", "pierre"]
# Pour le relier à la multi écoute dynamique
tags:
- { name: kernel.event_subscriber }
# tags:
# - { name: kernel.event_listener, event: oc_platform.post_message, method: processMessage }
Dite moi si ils vous manquent quelques choses, car peut être que je ne cherche pas au bon endroit.
Merci d'avance pour toutes vos réponses !
Symfony 3 priorité dans un eventsubscriber
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.