0

最近、1.3 のケーキ アプリを 2.0 にアップグレードしたので、app_error コードをやり直そうとしています。

Cake 1.3 では、app_error.php ファイルを作成してアプリのルートに配置し、組み込みの error404() および missingController() アクションをオーバーライドするだけでした。

ここに私の古い 1.3 /app/app_error.php ファイルがあります: http://pastebin.com/beWZD9PJ

誰かが定義済みの「エイリアス」URL を使用してサイトにアクセスしたときに作動し、それに応じてリダイレクトするコードが含まれていました。

これが Cake2.0 で機能するために必要なだけです。マニュアルにはすべて変更されたことが記載されていますが、このような特定のケースは見つかりません。誰でも私を助けてくれるので、error404 コードが作動しますか?

どうもありがとう

4

3 に答える 3

5

CakePHP 2.0 ar の 4xx および 5xx エラーは例外になったため、例外レンダラーまたはハンドラーをカスタマイズする必要があります。このセクションから下まで読んでくださいhttp://book.cakephp.org/2.0/en/development/exceptions.html#exception-renderer

于 2012-10-03T09:49:32.527 に答える
2

Cake 2 のコントローラーで次のコードを使用すると、404 例外をスローできます。

throw new NotFoundException(__('Your error text here'));

次に、APP/View/Errors/error400.ctp表示に関連するものを提示するだけです。Cakeにはデフォルトでこれが含まれています:

<h2><?php echo $name; ?></h2>
<p class="error">
    <strong><?php echo __d('cake', 'Error'); ?>: </strong>
    <?php printf(
        __d('cake', 'The requested address %s was not found on this server.'),
        "<strong>'{$url}'</strong>"
    ); ?>
</p>
<?php
if (Configure::read('debug') > 0 ):
    echo $this->element('exception_stack_trace');
endif;
?>
于 2012-11-26T06:41:29.053 に答える
1

それは簡単です。

Cakephp 2 では、この関数を AppController に追加する必要があります。

public function appError($error) {
    $this->redirect('/');
}

ここでは、たとえば、すべてのエラーをインデックス ページにリダイレクトします。

于 2013-05-29T23:22:03.867 に答える