Phalcon PHP – 多个视图目录

我的Phalcon PHP项目有问题.我正在构建具有多个MVC目录的单个模块应用程序.

每个模块都有自己的“视图”目录,其中包含操作模板. (index.volt,show.volt等).布局从modules / layout /加载,然后设置

$this->view->setLayout('index');

在主控制器initialize()中.

这就是它的样子:
    

    .
    ├── application
    │   └── modules
    │       ├── index
    │       │   ├── ControllerBase.PHP
    │       │   ├── IndexController.PHP
    │       │   └── views
    │       │       └── index.volt
    │       ├── layout
    │       │   ├── index.volt
    │       │   └── admin.volt
    │       ├── page
    │       │   ├── Page.PHP
    │       │   ├── PageAdminController.PHP
    │       │   ├── PageController.PHP
    │       │   ├── admin_views
    │       │   │   ├── edit.volt
    │       │   │   └── index.volt
    │       │   └── views
    │       │       └── show.volt
    

这是我的观看服务:

$di->set('view', function () use ($mainConfig) {

    $view = new View();

    $view->setLayoutsDir(APPLICATION_PATH . "/modules/layout/");

    $view->registerEngines(array(
        '.volt' => function ($view, $di) use ($mainConfig) {

            $volt = new VoltEngine($view, $di);

            $volt->setoptions(array(
                'compiledpath' => $mainConfig->application->cacheDir,
                'compiledSeparator' => '_'
            ));

            return $volt;
        },
        '.phtml' => 'Phalcon\Mvc\View\Engine\PHP'
    ));

    return $view;
}, true);

我想在主控制器(ControllerBase.PHP)中设置视图目录,因为它取决于当前控制器名称.

例如:

myapp.com => /modules/index/views/index.volt
myapp.com/page/show/2 => /modules/page/views/show.volt

所以我的问题是:如何设置视图目录和搜索模式以匹配我的结构?

解决方法:

搞定了!

ControllerBase.PHP

$moduleName = $this->dispatcher->getControllerName();
$actionName = $this->dispatcher->getActionName();

// set view for current Controller and Action
$this->view->setMainView('layout/index');
$this->view->pick($moduleName."/views/".$actionName);

Services.PHP

$view->setViewsDir(APPLICATION_PATH . "/modules/");

我只是自己选择当前视图,使用View :: pick()

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...