1

Ok。TwigをViewエンジンとして使用しており、Phalconのバージョンは0.8です。

このリポジトリから取得したアダプターのコード:github私はcomposerを介してTwigを含めるため、このコードに小さな変更を加えました。これらの変更は重要ではないため、ここでは説明しません。

それで。ビューのディレクトリ構造は非常に単純です。

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

views / index.twigのソース:

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

そしてviews/about / index.twigのソース:

{% extends "index.twig" %}

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

また、単一のメソッドを持つコントローラーAbout(AboutController.php)があります

public function indexAction()

空っぽです。

Ok。今。ページ/aboutのリクエストを行うと、次のようなものが表示されると思います。

This is About page

しかし、views/index.twigのコンテンツはまだ表示されています。

This is main page

それは私には少し奇妙です。ブロック「コンテンツ」を再割り当てします!

テンプレートviews/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

{{content|raw}}を使用します

Index.twig:

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

アクションビュー:

<h2>Title 2</h2>
于 2013-01-31T10:27:46.757 に答える
0

問題は、私がドキュメントを読むのに十分ではなかったことです!

私の問題を解決するには、ビュー コンポーネントでテンプレートのレンダリング レベルを使用する必要がありました:公式ドキュメント

Twig の組み込みエクスポート機能を使用し、このエンジンの強力な継承メカニズムを使用するには、レベル レンダーを設定する必要があります。

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

この場合、エンジンはテンプレート アクションのコンテンツをすぐに処理します。

于 2013-01-23T20:28:50.380 に答える