PhalconPHP - 移动与控制器相关的视图文件夹

PhalconPHP - Moving the controller-related view folders

我正在使用 PhalconPHP 框架开发一个应用程序,随着我的应用程序变得越来越大,我的视图文件夹变得相当混乱。

目前我的 views 文件夹如下所示:

views_layouts
    |_index_..
    |_blog_..
    |_news_..
    |_etc_..

有什么方法可以将我的控制器相关文件夹移动到一个名为 pages 的单独文件夹中,这样我的目录结构就像这样吗?

views_layouts_index.volt
    |       |_blog.volt
    |       |_news.volt
    |       |_etc.volt
    |
    |_pages_index_..
          |_blog_..
          |_news_..
          |_etc_..

我想你可以把你的文件夹结构改成这样。

layouts
 |   controller_name.volt
 |   other_controller.volt
controller_name
 |   action_name.volt
 |   other_action.volt
other_controller
 |  action_name.volt
 |  other_action.volt

在布局文件夹的文件中,你可以放这样的东西

{% extends "templates/base.volt" %}
{% block title %}Title{% endblock %}{% block content %}
{{ content () }}{% endblock %}

在 templates/base.volt 文件中你可以放这样的东西

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="">
    <meta name="author" content="">
      <title>{% block title %}{% endblock %}</title>
</head>

</head>

<body>
{% block content %}{% endblock %}

  </body>
</html>

所有这些都应该在视图文件夹中

我可以通过编辑 ControllerBase class.

自己解决这个问题
// Change the default views directory to /app/views/pages/
$moduleName = $this->dispatcher->getControllerName();     // Eg: blog
$actionName = $this->dispatcher->getActionName();         // Eg: index
$this->view->pick("pages/$moduleName/$actionName");       // Result: "pages/blog/index"

您甚至可以多次调用 pick() 来覆盖控制器中的任何视图。