我是 Symfony 的新手,我正在尝试构建我的应用程序。但我在文档中找不到如何在事件订阅者中使用记录器作为表单。
我有独白.yml:
monolog:
channels: ["my"]
handlers:
my_handler:
type: stream
path: "%kernel.project_dir%/log/%kernel.environment%.event.log"
level: debug
channels: ["my"]
我有表单类型:
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 说我必须在 FormType 中添加参数来调用 addEventSubscriber(new FormEventSubscriber())。
那么我该怎么做呢?当我只是在 FormType 中创建 Logger() 类的对象并将其添加为参数时,它什么也不记录
更新。我找到了方法,很明显:) 我也刚刚向 FormType 添加了构造函数,就像在订阅者中一样:
private $logger;
public function __construct(LoggerInterface $myLogger)
{
$this->logger = $myLogger;
}
然后打电话
->addEventSubscriber(new FormEventSubscriber($this->logger))