1

継承が volt テンプレートで機能しない継ぎ目。

Phalcon のバージョンは 0.6.1 です

ファイル構造は次のとおりです。

  • ビュー/
    • 索引/
      • index.html
    • レイアウト/
      • main.html
  • index.php

index.php:

<?php
    $di = new Phalcon\DI\FactoryDefault();
    $di->set('volt', function ($view, $di){
        return new Phalcon\Mvc\View\Engine\Volt($view, $di);
    });

    $view = new \Phalcon\Mvc\View();
    $view->setViewsDir("views/");
    $view->registerEngines(array(
        ".html" => 'volt'
    ));
    $view->setDi($di);
    $view->start();
    $view->render("index", 'index');
    $view->finish();
    echo $view->getContent();

ビュー/インデックス/index.html

{% extends "layouts/main.html" %}
{% block content %}
    <h2>Index</h2>
{% endblock %}

ビュー/レイアウト/main.html

<h1>Main</h1>
{% block content %}
    Not index
{% endblock %}

実行すると、次のようphp index.phpになります。

キャッチされない例外 'Phalcon\Mvc\View\Exception' とメッセージ ''layouts/main.html' を拡張するテンプレート ビューが存在しません'

4

1 に答える 1

3

main.htmlこれは、アプリケーションが実際のパスでファイルを見つけることができないという事実に起因しています。フルパスを追加すると機能しますが、不便です。

このようなものが機能します

{% extends  "../views/layouts/main.html" %}

またはあなたのアプリが下にある場合app

{% extends  "../app/views/layouts/main.html" %}

Voltの設定から直接ルートパスやビューパスを参照する方法があるはずだと思います。それはNFRである可能性が非常に高いです。

于 2012-11-21T23:52:13.460 に答える