1

Zend MVC アプリケーションを開発しています。

ときどき、手早く汚いデバッグを行うためだけに、テキストをエコーし​​たいことがあります。例えば

<?php
class MyClass {}
echo('hello world - yes this script is included');

ブートストラップで 'debug-text' をエコーできます> しかし、テキストがモデルまたはコントローラーでエコーされると、出力にレンダリングされません。

Zend 1.9.5 を使用しており、MVC で Zend Layout を使用しています


すべての「非ビュー スクリプト レンダリング」出力を抑制する設定がどこかにありますか?

4

4 に答える 4

1

echo の代わりに die() を使用することもできます:)動作します。または、次のように Zend_Log と出力ライターを使用します。

$writer = new Zend_Log_Writer_Stream('php://output');
于 2010-01-08T17:22:56.920 に答える
1

出力バッファリングが原因である可能性があります。試す:

echo 'my debug output';
flush();
于 2010-01-08T20:49:19.483 に答える
0

viewRendering がオンになっている場合、レンダリングする view/scripts/ を探している可能性があり、echo ステートメントが表示されない可能性があります。

指定されたコントローラーの viewRendering をオフにして、それが役立つかどうかを確認できます。

viewRenderer->setNoRender()
于 2010-01-08T16:04:18.467 に答える
0

この質問に答えているのは、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...      
于 2010-11-04T04:58:39.750 に答える