【发布时间】:2017-03-18 22:06:13
【问题描述】:
我正在尝试设置一个 kernal.controller 侦听器以在函数返回 true 时重定向到另一个路由。我有可用的路由,但无法使用 $event->setController() 从该路由设置控制器。
我收到以下错误:
FilterControllerEvent.php 第 59 行中的 FatalThrowableError: 类型错误:传递给 Symfony\Component\HttpKernel\Event\FilterControllerEvent::setController() 的参数 1 必须是可调用的,给定字符串
有人对我如何完成这项工作有建议吗?
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());
}
}
}
【问题讨论】:
-
答案非常令人费解。正如问题所暗示的那样,您是否尝试进行实际重定向?或者只是想设置一个不同的控制器?如果你想做一个实际的重定向,那么你需要监听允许返回重定向响应的内核请求事件。文档有很多例子。
标签: php symfony redirect listener