我有一個服務,在其中注入TokenStorage並希望獲得curent用戶。在Symfony的kernel.request或kernel.request事件中獲取curent用戶
/**
*
* @Service("liip_theme.theme_request_listener")
* @Tag("kernel.event_listener", attributes={ "event"="kernel.request", "method"="onKernelRequest" })
*/
class ThemeRequestListener
{
private $sam;
/**
* @InjectParams({
* "sam" = @Inject("security.token_storage")
* })
*/
public function __construct(TokenStorage $sam)
{
$this->sam = $sam;
}
/**
* @param GetResponseEvent $event
*/
public function onKernelRequest(GetResponseEvent $event)
{
$a = $this->sam->getToken()->getUser();
}
}
但是我卻越來越
Error: Call to a member function getUser() on null
我沒有得到這個時候我var_dump($a)
,但是當我運行的網站通常也與此錯誤崩潰。我也刪除了緩存並重新啓動了apache。我也確定我已經登錄。var_dump() - 它的工作原理和檢索curent用戶,但沒有傾銷它,網站崩潰。
環顧四周,我發現它可能與聽者的優先級,但是我說:
* @Tag("kernel.event_listener", attributes={ "event"="kernel.request", "method"="onKernelRequest","priority"=0 })
而改爲0到-1,-255,255,1,什麼都沒有發生。
我做錯了什麼或是JMSDIExtraBundle的錯?
我也定義它像這樣:
liip_theme.theme_request_listener:
class: Application\Liip\ThemeBundle\EventListener\ThemeRequestListener
arguments: [ @security.token_storage ]
tags:
- { name: kernel.event_listener, event: kernel.request, method: onKernelRequest, priority: 0 }
所以它不是從JMSDI。
另一件事,它只在DEV環境中崩潰。我收到Symfony工具欄崩潰警報。在PROD中,它工作正常。但我仍然想解決它。
它不能是另一個包,因爲我已經嘗試了一個新的新的2.8.3項目,沒有供應商捆綁標準的,只是這個監聽器,並得到相同的錯誤。
打開GitHub問題here。
您有一個自定義數據收集器的分析器? –
不是我自己製作的,但是我似乎發現只有那些是來自奏鳴曲集合的'sonata.block.data_collector'和'form.type_extension.form.data_collector'。 –