0

コントローラーファイルにこのコードがあります。

public function indexAction() { return new ViewModel(); }

コンテンツが次のとおりである index.phtml を表示するだけです。

<?php echo phpinfo();

そして、これは意図したとおりに機能します。

会社独自の外観/スタイルを使用したいので、デフォルトのテンプレート (module\Application\view\layout\layout.phtml) をコピーし、ファイルを自分のフォルダーに配置しました。

2 つのテンプレート ファイルにいくつかの変更を加えました。デフォルトのテンプレートに、次を追加しました。

<hr>default<hr>

新しいテンプレート ファイルに、次を追加しました。

<hr>new<hr>

他の変更は行われませんでした。

次に、コントローラー関数を次のように変更しました。

public function indexAction() {
    $viewModel = new ViewModel();
    $viewModel->setTemplate('directory/templates/flinders.phtml');

    return $viewModel;
}

私の問題は、私の index.phtml が呼び出されなかったように見えることです。以前とは異なり、phpinfo() がブラウザーに表示されることはありませんでした。

また、ブラウザには、デフォルト テンプレートと新しいテンプレートに追加したテキストが表示されます。setTemplate 関数を使用すると、デフォルトのテンプレートをオーバーライドできると思いました。そのため、新しいテンプレートに加えた変更のみを表示する必要があると想定しました。また、新しいテンプレートのコンテンツをすべて削除しても、ブラウザにはデフォルト テンプレートのコンテンツが表示されたままです。

私の問題を解決する方法についてのアイデアはありますか? ありがとう

4

1 に答える 1

1

テンプレートとレイアウトの意味を誤解しているようです。

template = アクションに割り当てられたビュー ファイル。indexAction は自動的に index.phtml を探します。setTemplate を使用してテンプレートを変更すると、フレームワークは index.phtml を検索せず、代わりに指定したものを使用します。

レイアウト = Web サイト内のすべてのページのルック/フィール。$this->layout('some_phtml_file_here') は、ZF2 スケルトンで提供されるデフォルトの layout.phtml をオーバーライドします。

このウェブサイト ( http://zf2test.akrabat.com/ ) は、それをよりよく理解するのに役立ちます!

于 2013-03-12T06:33:43.887 に答える