1

私はcakephpを使用しています。エラー処理に取り組んでいます

私はhttp://book.cakephp.org/1.3/en/view/1188/Error-Handlingに従っています

私は AppError を作成しました 私のコードは

app/app_error.php

<?php

    class AppError extends ErrorHandler {


        function error404() {
            //$this->controller->set('file', $params['file']);
            $this->_outputMessage('error404');
        }

    }
    ?>

コントローラーからこのエラー404を呼び出しています

function userprofile($id = null) {
        $user = $this->Session->read('user');
        if($id != $user['User']['id'])
        {
            $this->cakeError('error404');
        }
}

しかし、Erro Fatal error: Call to undefined method UsersController::cakeError() in D:\wamp\www\survey\app\Controller\UsersController.php 行 318 を見つけました

私は何かが恋しいですか?

4

3 に答える 3

0

CakePHP 2.Xの場合、Object::cakeError()は削除されました。代わりに、いくつかの例外に置き換えられました。以前はcakeErrorと呼ばれていたすべてのコアクラスが例外をスローするようになりました。これにより、アプリケーションコードのエラーを処理するか、組み込みの例外処理でエラーを処理するかを選択できます。

CakePHP 2.0では、エラーと例外の処理をこれまで以上に制御できます。デフォルトのエラーハンドラーとして設定するメソッドと、configureを使用して例外ハンドラーを構成できます。

これがエラー設定のリンクです。必要なものを簡単に実現できます。

于 2012-09-06T06:39:37.450 に答える
0

CakePHP 1.3 を使用しており、ここで定義されている ErrorHandler を拡張していると思います。

....\cake\libs\error.php

この error404 に従って、次のように定義されます。

function error404($params) {
    extract($params, EXTR_OVERWRITE);

    if (!isset($url)) {
        $url = $this->controller->here;
    }
    $url = Router::normalize($url);
    $this->controller->header("HTTP/1.0 404 Not Found");
    $this->controller->set(array(
        'code' => '404',
        'name' => __('Not Found', true),
        'message' => h($url),
        'base' => $this->controller->base
    ));
    $this->_outputMessage('error404');
}

..../app/app_error.php で次のように定義しました

function error404() {
        //$this->controller->set('file', $params['file']);
        $this->_outputMessage('error404');
}

PHP では、このようなタイプのメソッドのオーバーロードは許可されていません。あなたはあなたの答えを得たと思います。

できることは、拡張された AppError クラスで独自の関数を作成し、その中にエラー名またはテンプレート名を渡すことです

function customeError($errorMessage){
     $this->_outputMessage($errorMessage);
} 

次に、さまざまなテンプレート名に基づいて、条件を _outputMessage() 関数に入れ、ユーザーを別のページにリダイレクトできます。

于 2012-09-06T12:00:33.137 に答える
0

エラー メッセージで返されたフォルダー パスから判断すると、CakePHP 2 を使用しているように見えますが、ドキュメントとサンプルは CakePHP 1.3 です。

2.0の本でエラー処理例外を参照してください(真剣に読んでください。利用可能な例外はたくさんあります)。もう少し複雑ですが、はるかに柔軟だと思います

于 2012-09-05T15:30:15.663 に答える