我想在我的帮助函数中使用forward()函数。不幸的是我无法管理它。
的IndexController:
class IndexController extends ControllerBase
public function indexAction()
$helper = new CustomFunctions();
$helper->log();
die('still here');
{
{
CustomFunctions
class CustomFunctions extends \Phalcon\DI\Injectable{
public function log(){
//...
$this->dispatcher->forward([
'controller' => 'error',
'action' => 'route404'
]);
return false;
}
}
为什么前锋没有工作?它应该转发我到错误控制器而不是显示索引控制器的消息。谢谢你的所有建议。
答案 0 :(得分:1)
dispatcher->forward
在Phalcon中不起作用。它只是启动另一个控制器和操作的简写,但它不会从当前控制器或操作退出或返回。换句话说,您应该检查$helper->log();
是否返回false,如果是,则假设return;
或exit;
即使您使用重定向而不是转发,这意味着它会发送标头客户端的浏览器,它仍然通过Phalcon,只有在Phalcon被告知发送标题后才发送。这允许您在Phalcon中围绕事物编写测试,而不像实际使用标题设置东西。不立即退出允许您在不停止中间测试的情况下测试->forward
和->redirect
之类的内容。如果您需要模拟早期退出,也可以尝试throw
方法,然后捕获此类错误以确定是否需要exit;
。这种方法可以让您exit;
的好处,同时仍然可以测试。或者你可以在已经拥有它的地方扔掉一个骰子,或者从你的错误控制器那里扔掉exit;
等。
您可能想要阅读调度循环:
https://docs.phalconphp.com/en/3.2/dispatcher