gpt4 book ai didi

php - 从 FilterControllerEvent 监听器重定向到另一个 Symfony 路由

转载 作者:行者123 更新时间:2023-12-04 14:28:45 29 4
gpt4 key购买 nike

我正在尝试设置一个 kernal.controller 监听器,以便在函数返回 true 时重定向到另一条路由。我有可用的路线,但无法使用 $event->setController() 从这条路线设置 Controller 。

我收到以下错误:

FatalThrowableError in FilterControllerEvent.php line 59: Type error: Argument 1 passed to Symfony\Component\HttpKernel\Event\FilterControllerEvent::setController() must be callable, string given

有人对我如何完成这个有什么建议吗?

class BlockListener
{
public function onKernelController(FilterControllerEvent $event)
{
$block = $this->blockService->checkForBlock($user->getId());

if ($block instanceof Block) {
// $block-getRoute() is a standard Symfony route string. It doesn't work!
$event->setController($block->getRoute());
}
}
}

最佳答案

我们能够通过使用 Lambda 函数使其正常工作。感谢您的帮助!

    if ($block instanceof Block) {
$redirectUrl = $this->router->generate($block->getRoute());
$event->setController(function() use ($redirectUrl) {
return new RedirectResponse($redirectUrl);
});
};

关于php - 从 FilterControllerEvent 监听器重定向到另一个 Symfony 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40433405/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com