最近研究Phalcon,发现forward很好玩,可是也发现了问题。
根据文档:https://docs.phalconphp.com/zh/3.2/dispatcher#forwarding-events-manager 操做以后,发现仍是不能在不一样 module 之间正常跳转。通过研究,发现缘由是:$view->setBasePath() 设置错误,须要从新设置一下,方法以下:(这个方法是直接在 controller 下面执行的,若是须要在 event 下执行,作相应修改便可)php
if (1) { $this->forward([ 'namespace' => 'Bangbang\Modules\Wechat\Controllers', 'controller' => 'index', 'action' => 'index' ]); $this->dispatcher->setModuleName($moduleName); //设置 view dirs $this->view->setViewsDir($viewDir); $this->view->setLayoutsDir($layoutsDir); $this->view->setPartialsDir($partialsDir); return false; }
注意:
一、$moduleName,$viewDir,$layoutsDir,$partialsDir 根据实际填写;
二、$viewDir,$layoutsDir,$partialsDir 都为绝对路径;this
另外,Module.php 里面 registerServices 方法也须要设置一下,参考一下个人:spa
$view->setViewsDir(__DIR__ . '/views/'); $view->setLayoutsDir(__DIR__ . '/views/layouts/'); $view->setPartialsDir(__DIR__ . '/views/shared/');
forward 比 redirect 少一次请求,何乐而不为呢!code