确定。我使用Twig作为View引擎,Phalcon版本是0.8
我从此存储库获取的适配器代码:github我在此代码中进行了一些小修改,因为我通过composer包含了Twig。我不会描述这些修改,因为它们并不重要。
因此。我的视图目录结构非常简单:
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 %}
另外,我有单一方法控制器About(AboutController.php)
public function indexAction()
它是空的。
确定。现在。当我做一个页面/约的请求时,我希望看到类似的东西:
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"
因此。有什么想法吗?
P.S。我想我应该调用tpl views / index.twig方法{{content()}}但是Twig对这个方法一无所知。
答案 0 :(得分:0)
问题是我不够好阅读文档!
要解决我的问题,我必须在View组件中使用渲染级别的模板:official docs
要在Twig中使用内置导出功能并使用强大的继承机制, 我们必须设置级别渲染:
$view->setRenderLevel(Phalcon\Mvc\View::LEVEL_ACTION_VIEW);
在这种情况下,引擎将立即处理模板操作的内容。
答案 1 :(得分:0)
使用{{content | raw}}
Index.twig:
<h1>Title</h1>
{{ content|raw }}
行动观点:
<h2>Title 2</h2>