最近研究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