2

404などのエラーを処理するときに、ページタイトルをデフォルトの「エラー」から変更する必要があります。そのため、レイアウトの変数$title_for_layoutにタイトルを配置する必要があります。app / Config / core.phpで構成を変更し、コントローラーのようにページタイトルを設定して、カスタムエラー処理機能を作成しようとしました

Configure::write('Error.handler', function($code, $description, $file = null, $line = null, $context = null) {
     $this->set('title_for_layout', 'Vyskytla sa chyba');
});

予想どおり、PHPエラーが発生しました(59行目はコードサンプルの2行目です)

Fatal error: Using $this when not in object context in /var/www/web/app/Config/core.php on line 59

では、default.ctpレイアウトのタイトルを設定するにはどうすればよいですか?ありがとう。

4

1 に答える 1

3

CakePHP 2.0では、次のコードを試して、必要なものと同じものを実現できます。

これを試して:

/app/Config/core.php

例外レンダリングはとして設定する必要がありますAppExceptionRender。例:

Configure::write('Exception', array(
        'handler' => 'ErrorHandler::handleException',
        'renderer' => 'AppExceptionRenderer',
        'log' => true
));

/app/Controller/ErrorsController.php

class ErrorsController extends AppController {
    public $name = 'Errors';

    public function beforeFilter() {
        parent::beforeFilter();
        $this->Auth->allow('error404');
    }

    public function error404() {
        //$this->layout = 'default';
            $this->set('title_for_layout', 'Vyskytla sa chyba'); 
    }
}

/app/Lib/Error/AppExceptionRenderer.php

App::uses('ExceptionRenderer', 'Error');

class AppExceptionRenderer extends ExceptionRenderer {

    public function notFound($error) {
        $this->controller->redirect(array('controller' => 'errors', 'action' => 'error404'));
    }
}

/app/View/Errors/error404.ctp

<div class="inner404">
    <h2>404 Error - Page Not Found</h2>
</div>

必要な場所に挿入します。throw new NotFoundException();

参照:CakePHP 2.0-カスタムエラーページを作成する方法は?

<CakePHP 2.xの場合:

app / views / errorsでカスタムエラーページビューを作成する場合は、そのエラービューページのphpセクションで次を使用できます。

$this->setLayout("Title for the error page here");

次に、エラーページが表示されると、タイトルが表示されます。繰り返しますが、それはカスタムエラーページを設定した場合です。

これがあなたが必要とした同じことをする別の方法です。

// Create an error.php file in your /app folder with the following code:

<?php
class AppError extends ErrorHandler {
    function error404($params) {
            $this->controller->layout = "error";
            $this->set('title_for_layout', 'Vyskytla sa chyba');
            parent::error404($params);
    }
}
?>
于 2012-08-31T07:10:12.227 に答える