1

私はそれを期待していました

クラスDefault_Plugin_TestはZend_Controller_Plugin_Abstractを拡張します
{{
  パブリック関数preDispatch($ request)
  {{
        Zend_Controller_Front :: getInstance()-> setParam('disableOutputBuffering'、true);
  }
}

アクションに関連付けられたビューのバッファリングも無効になりますが、無効になりません。

ハードコーディングされているため、ビューで出力バッファリングを無効にすることはできないようです。

抽象クラスZend_View_AbstractはZend_View_Interfaceを実装します
{{
    / **
     *ビュースクリプトを処理し、出力を返します。
     *
     * @param string$name処理するスクリプト名。
     *@returnstringスクリプト出力。
     * /
    パブリック関数render($ name)
    {{
        //親のプライベートメソッドを使用してスクリプトファイル名を検索します
        $ this-> _ file = $ this-> _ script($ name);
        unset($ name); //ローカルスコープから$nameを削除します

        ob_start();
        $ this-> _ run($ this-> _ file);

        $ this-> _ filter(ob_get_clean());を返します。//出力をフィルタリングします
    }
}

誰かが同様の経験をしたか、これに対する解決策を持っていますか?

4

2 に答える 2

3

1 つ、これをしないでください。

ビューは、渡されたものを表示する責任があります。リクエストはコントローラー/アクションによって受信され、実行する必要があるもの、データベースへの書き込み、データベースからの取得などを決定します。次に、出力をビューに割り当て、ビューに表示します。

ビューの外側にページの一部を表示し始めてから MVC モデルを壊すと、まさに Zend Framework を使用する必要があります。

あなたの実際の問題は何ですか?

編集:

このような CRON ジョブを実行しないでください。それらをスタンドアロン スクリプトとして実行し、CRON が使用する Zend Framework とライブラリをインスタンス化します。CRON は、実行するために MVC パターンを必要とせず、電子メールなどを出力に使用します。CRONからの出力を期待し、その出力をCRONが成功したかどうかを判断する意味のある方法として使用することは、実際にはCRONの正しい使用方法ではありません。後で確認するために出力をログに記録するか、電子メールで送信する必要があります。

これを行うことで、ZFをインスタンス化し、ディスパッチしないことができます

 $application->bootstrap();

これの代わりに

 $application->bootstrap()->run();
于 2011-01-26T12:10:17.707 に答える
1

これは、ZF のバージョン 1 に適用されます。

このページに従って、 public/index.php で出力バッファリングを無効にする必要があります (ブートストラップ呼び出しの前と Zend_Application インスタンス化の後):

私は次のようなものを使用します:

$application = Zend_Application(
    APPLICATION_ENV,
    APPLICATION_PATH . '/configs/application.ini'
);

if(APPLICATION_ENV !== 'production') {
    $frontController = Zend_Controller_Front::getInstance();
    $frontController->setParam('disableOutputBuffering', true);
}

$application->bootstrap()->run();

application.ini でこのオプションを設定しても機能しないことに注意してください。

于 2013-09-13T08:54:20.290 に答える