【问题标题】:Phalcon dispatching execute two actions instead of onePhalcon 调度执行两个动作而不是一个
【发布时间】:2013-11-14 09:22:26
【问题描述】:

我会尽力解释我的问题。

当调度程序调用调度方法时,它执行两个控制器动作而不是一个。首先它执行正确的操作,之后它总是执行定义的 notFound 操作。 notFound 动作没有输出是渲染的。我发现了这一点,然后我在我的 notFound 操作中放置了一些数据库日志记录逻辑。每次请求时,我的 db 表中都会出现新记录,但未扩展。

我的代码如下所示:

$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();

但一切都很好。请告诉我发生了什么以及我做错了什么。谢谢。

【问题讨论】:

    标签: controller router phalcon


    【解决方案1】:

    路由器必须调用句柄方法。然后它会知道控制器和更喜欢的动作。 大约两个电话。是否有正常的应用程序引导?为什么您选择为您的应用程序自定义行为?这种行为到底发生在哪里?

    【讨论】:

    • 起初我使用的是普通的引导程序,它是由 phalcon-devtools 生成的,但它不起作用。所以我决定尝试自己写一个。
    • 在这里您可以找到一些示例并了解它是如何工作的。希望,可能有用docs.phalconphp.com/en/latest/reference/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多