1

行。我使用 Twig 作为视图引擎,Phalcon 版本是 0.8

我从这个存储库得到的适配器代码:github我对这段代码做了一个小修改,因为我通过composer包含了Twig。我不会描述这些修改,因为它们并不重要。

所以。我的view目录结构很简单:

app
- views
--- index.twig
--- about
---- index.twig

视图来源/index.twig:

<html>
<head>
    <title>Phalcon PHP Framework</title>
</head>
<body>
    {% block content 'This is main page' %}
</body>
</html>

和意见来源/about/index.twig:

{% extends "index.twig" %}

{% block content %}
    This is About page
{% endblock %}

另外,我有控制器关于(AboutController.php)的单一方法

public function indexAction()

它是空的。

行。现在。当我请求页面 /about 时,我希望看到这样的内容:

This is About page

但我仍然看到views/index.twig的内容:

This is main page

这对我来说有点奇怪。我重新分配块“内容”!

我在模板视图/about/index.twig 中做了一些检查,从块中添加了额外的字符,我收到了来自 Twig 的错误:

A template that extends another one cannot have a body in "about/index.twig"

所以。有任何想法吗?

PS 我想我应该调用 tpl views/index.twig 方法 {{ content() }} 但 Twig 对这种方法一无所知。

4

2 回答 2

0

问题是我不够好,无法阅读文档!

为了解决我的问题,我不得不在 View 组件中使用模板的渲染级别:官方文档

要使用 Twig 内置的导出功能并使用该引擎强大的继承机制,我们必须设置 level render:

$view->setRenderLevel(Phalcon\Mvc\View::LEVEL_ACTION_VIEW); 

在这种情况下,引擎会立即处理模板动作的内容。

于 2013-01-23T20:28:50.380 回答
0

使用 {{ 内容|原始 }}

索引.twig:

<h1>Title</h1>
{{ content|raw }}

动作视图:

<h2>Title 2</h2>
于 2013-01-31T10:27:46.757 回答