我会尝试解释我的问题。
当调度程序调用调度方法时,它执行两个控制器操作而不是一个。首先它执行正确的操作,然后它总是执行定义的notFound操作。 notFound动作的输出没有渲染。我找到了这个然后我在我的notFound动作中放了一些数据库记录逻辑。每次请求都会在我的数据库表中显示新记录,但不会被删除。
我的代码如下所示:
$d = new Dispatcher();
$d->setDI($di);
$d->setControllerName($router->getControllerName());
$d->setActionName($router->getActionName());
$d->setParams($router->getParams());
$d->dispatch();
然后我在这里看到一个问题,我尝试使用此代码调试点亮,但它正确的方式,一切正常:
$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();
但是,任何工作都很好。请告诉我发生了什么,我做错了什么。感谢。
答案 0 :(得分:0)
路由器必须调用handle方法。然后它会知道控制器和更喜欢的动作。 大约两个电话。是否有正常的应用程序引导?为什么选择为应用程序制作自定义行为?确切地说,这种行为发生在哪里?