Phalcon框架 forward 跳轉到不一樣 modules 的方法

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

相關文章
相關標籤/搜索