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

时间:2015-02-16 23:20:58

标签: phalcon volt

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

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

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

有没有办法将我的控制器相关文件夹移动到名为pages的单独文件夹,所以我的目录结构如下所示?

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

2 个答案:

答案 0 :(得分:1)

我认为您可以将文件夹结构更改为这样的内容。

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>
&#13;
&#13;
&#13;

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

答案 1 :(得分:1)

我能够通过编辑ControllerBase类来解决这个问题。

// 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()来覆盖控制器中的任何视图。