Я новичок в Symfony, и я пытаюсь создать свое приложение. Но я не могу найти в документации, как использовать Logger в подписчике событий для формы.
У меня есть monolog.yml:
monolog:
channels: ["my"]
handlers:
my_handler:
type: stream
path: "%kernel.project_dir%/log/%kernel.environment%.event.log"
level: debug
channels: ["my"]
У меня есть FormType:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('email', EmailType::class)
//here some other fields are added
->addEventSubscriber(new FormEventSubscriber());
}
Затем у меня есть довольно глупая форма FormEventSubscriber:
class FormEventSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return [
FormEvents::PRE_SET_DATA => 'onPreSetData',
FormEvents::PRE_SUBMIT => 'onPreSubmit',
];
}
public function onPreSetData(FormEvent $event)
{
$user = $event->getData();
$form = $event->getForm();
}
public function onPreSubmit(FormEvent $event)
{
$user = $event->getData();
$form = $event->getForm();
}
}
Теперь я должен добавить к ней LoggerInterface. Я пытаюсь вставить этот код подписчику:
private $logger;
public function __construct(LoggerInterface $myLogger)
{
$this->logger = $myLogger;
}
А затем Symfony говорит, что я должен добавить аргумент для вызова addEventSubscriber (new FormEventSubscriber ()) в FormType.
Итак как я должен это сделать? Когда я просто создаю объект класса Logger () в FormType и добавляю его в качестве аргумента, он ничего не записывает
Upd. Я нашел способ, и это было очевидно :) Я просто добавил конструктор в FormType, как в подписчике:
private $logger;
public function __construct(LoggerInterface $myLogger)
{
$this->logger = $myLogger;
}
, а затем вызвал
->addEventSubscriber(new FormEventSubscriber($this->logger))