如何在一个多模块的Phalcon应用程序中使用 "主布局 "视图?[英] How do I use "Main Layout" views in a multi module Phalcon application?

问题描述

我正在为我的 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?)

我希望这是有道理的!

推荐答案

在这个版本(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;
    }
);

等等.

您还可以拥有一个对所有模块都通用的主视图,但不能是两者的组合.

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

请参阅 Github 上的此示例.

这很可能是 0.7 版本的 NFR.

本文地址:https://www.itbaoku.cn/post/1739752.html