如何在多模块Phalcon应用程序中使用"主要布局"视图?

Tim*_*Tim 5 phalcon

我正在为PhalconPHP应用程序使用"多模块"MVC结构.

我想弄清楚的一个问题是如何配置我的"主布局"视图在模块视图文件夹上方.

换句话说,我想要一个主"主要布局"(如此处所述),我希望我的所有模块在该主布局视图中的"控制器视图"级别输出其视图.

默认情况下,将显示正在进行主布局视图

[app]
 [module1]
    [controllers]
    [models]
    [views]
        (main layout is coming from here)
 [module2]
    [controllers]
    [models]
    [views]
        (main layout is coming from here)
 [views]
    (master main layout should come from here?)
Run Code Online (Sandbox Code Playgroud)

我希望这是有道理的!

Nik*_*los 2

您正在寻找的内容无法在此版本(0.5.0 稳定版)或下一版本 0.6.0 中完成(因为它已冻结,待发布)。

在您的模块中您注册您的观点

// /module1/Module.php

// Registering the view component
$di->set(
    'view', 
    function () {
        $view = new \Phalcon\Mvc\View();
        $view->setViewsDir('../apps/module1/views/');
        return $view;
    }
);

// /module2/Module.php

// Registering the view component
$di->set(
    'view', 
    function () {
        $view = new \Phalcon\Mvc\View();
        $view->setViewsDir('../apps/module2/views/');
        return $view;
    }
);
Run Code Online (Sandbox Code Playgroud)

等等。

您还可以拥有所有模块通用的主视图,但不是两者的组合。

//Registering a shared view component
$di->set(
    'view', 
    function() {
    $view = new \Phalcon\Mvc\View();
    $view->setViewsDir('../apps/views/');
    return $view;
    }
);
Run Code Online (Sandbox Code Playgroud)

请参阅Github 上的此示例

这很可能是 0.7 版本的 NFR。