我会尽力解释我的问题。
当调度程序调用调度方法时,它执行两个控制器动作而不是一个。首先它执行正确的操作,之后它总是执行定义的 notFound 操作。notFound 动作没有输出是渲染的。我发现了这一点,然后我在我的 notFound 操作中放置了一些数据库日志记录逻辑。随着每个请求的新记录出现在我的数据库表中,该表没有被扩展。
我的代码如下所示:
$d = new Dispatcher();
$d->setDI($di);
$d->setControllerName($router->getControllerName());
$d->setActionName($router->getActionName());
$d->setParams($router->getParams());
$d->dispatch();
然后我在这里看到了一个问题,我试图用这段代码调试一个 lit,但它是正确的,一切正常:
$d = new Dispatcher();
$d->setDI($di);
$d->setControllerName("login");
$d->setActionName("index");
$d->setParams(array());
$d->dispatch();
所以我尝试这样做,但这不起作用:
$controller = $router->getControllerName();
$action = $router->getActionName();
$params = $router->getParams();
$d = new Dispatcher();
$d->setDI($di);
$d->setControllerName($controller);
$d->setActionName($action);
$d->setParams($params);
$d->dispatch();
然后我决定路由器是这里的坏人并尝试这个并期待不好的结果:
$controller = $router->getControllerName();
$action = $router->getActionName();
$params = $router->getParams();
$d = new Dispatcher();
$d->setDI($di);
$d->setControllerName("login");
$d->setActionName("index");
$d->setParams(array());
$d->dispatch();
但一切都很好。请告诉我发生了什么以及我做错了什么。谢谢。