この質問に答えているのは、10 か月後に同じコードに戻って、また混乱したからです。
私は、デフォルト モジュール、インデックス コントローラー、およびインデックス アクションのコンテキストにいました。
コードで何が起こっているかを簡単に確認する方法として、いくつかの単純なテキストをエコーしたかったのです。
class IndexController extends Zend_Controller_Action
{
public function indexAction()
{
//home page
echo '<h1>hello world</h1>';
//set the special home page layout
$this->_helper->layout()->setLayout('home-page');
}
問題は、エコーされたテキストが表示されないことでした。
他のコントローラーでは機能しましたが、これでは機能しませんでした。それは私を夢中にさせていました。
今 - 私は問題を解決しました。
私はこの特定のコントロール アクションに特別なレイアウトを使用していました...「ホームページ レイアウト」です。
私のホームページのレイアウトでは、ビュー スクリプトをレンダリングしていませんでした。すべてのコンテンツとデザインはレイアウトにありました。ホームページは特別な独自のページであるため、2 段階のビューに分割する必要はありませんでした。このため、ビュー スクリプトが必要な理由はありませんでした。しかし、ZF が文句を言わないように、'views\scripts\index\index.phtml' を作成しました。ただし、レイアウトでレンダリングしませんでした-必要がなかったからです。
layout()->content
エコーされた出力はすべて(「デフォルト」応答セグメントからのレイアウトによって自動的に割り当てられます) に取り込まれます。そのセグメントをエコーアウトしていなかったので、エコーされたテキストが抑制されているかのように動作しました。
この問題を解決するには、コンテンツ セグメントを確実にエコーアウトする必要がありました。
すなわち
<html>
<head>
...
</head>
<body>
... my home page html...
<?php echo $this->layout()->content ?>
... my home page html...
</body>
</html>
私のデバッグテキストもエコーされているので、次のようにレンダリングされます:
... my home page html...
<h1>hello world</h1>
... my home page html...