php - Phalcon PHP - 多 View 目录

标签 php directory views phalcon

我的 Phalcon PHP 项目有问题。我正在构建内部包含多个 MVC 目录的单模块应用程序。

每个模块都有自己的“views”目录,其中包含 Action 模板。 (index.volt、show.volt 等)。布局从 modules/layout/ 加载,然后用

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

在主 Controller 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
    

This is my view service:

$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);

我想在主 Controller 中设置 View 目录 (ControllerBase.php),因为它取决于当前 Controller 的名称。

例如:

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

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

最佳答案

成功了!

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);

服务.php

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

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

关于php - Phalcon PHP - 多 View 目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28926694/

相关文章:

c - 如何将参数从 Makefile 传递给程序?

ruby-on-rails - Rails 在 Controller Action 中形成,在另一个 View 中呈现?

php - 如何显示所有记录分组依据

php - 如果为零则隐藏产品价格

php - 匹配正则表达式中的空格

rspec View stub 和部分

c# - MVVM Light - 多个 ViewModel(并将它们连接起来)

php - 如何在关闭浏览器选项卡时清除 session ?

c++ - MFC等价于Java File#isDirectory()

macos - 我必须使用目录的本地化版本吗?