0
我試圖實現從Symfony的默認異常偵聽器派生的自定義異常偵聽器。最小碼爲:從Symfony默認異常偵聽器派生自定義異常偵聽器:什麼是正確的服務參數?
use Symfony\Component\HttpKernel\EventListener\ExceptionListener as SymfonyExceptionListener;
namespace MyCompany\MyBundle\EventListener;
class ExceptionListener extends SymfonyExceptionListener {
public function __construct($controller, LoggerInterface $logger = null) {
parent::__construct($controller, $logger);
}
public static function getSubscribedEvents() {
// The parent class has priority -128
return array(
KernelEvents::EXCEPTION => array('onKernelException', -64),
);
}
}
很顯然,我需要注入控制器和記錄到構造,這是我的問題開始的地方。根據該文件,我需要通過註冊服務:
services:
kernel.listener.custom_exception_listener:
class: MyCompany\MyBundle\EventListener\ExceptionListener
arguments: []
tags:
- { name: kernel.event_listener, event: kernel.exception, method: onKernelException, priority: -64 }
我需要什麼投入arguments: []
?它必須沿線"@controller @logger-service"
,但我無法在任何地方找到正確的名稱。
你或多或少重複了我的代碼,但沒有回答我的問題默認參數。我從默認的ExceptionListener繼承的原因是我想保留99%的功能,但是修改爲1%。我知道如何註冊事件監聽器。代碼已經在我的問題中了。你寫道:「在這種情況下,你應該創建構造函數並注入將要使用的服務。」真的嗎?這正是我的問題所在。什麼是正確的名稱(在YAML文件中)需要放入事件偵聽器的構造函數的「控制器」參數? – user2690527
將默認的symfony異常監聽器參數添加到答案 – Ziumin
謝謝,我只想知道。 – user2690527