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

相关文章
相关标签/搜索