0

ExceptionRendererを拡張して、CakePHP2.0でカスタム404ページを作成しようとしています。View CakeでHTMLマークアップされた文字列を出力する場合を除いて、すべてが正常に機能しています。HTMLエンティティが不要にエンコードされています。どうすればこれを防ぐことができますか?

私のレンダラーには次のものがあります:-

class AppExceptionRenderer extends ExceptionRenderer {
    public function missingController($error) {
        $this->controller->set('test', '<p>Test</p>');
        header('HTTP/1.1 404 Not Found');
        $this->controller->render('/Errors/error404', 'default');
        $this->controller->set('title_for_layout', 'Page Not Found');
        $this->controller->response->send();
    }
}

ビュー(View / Error / error404.ctp):-

<?php echo $test ?>

&lt;test&gt;これはではなく出力します<p>test</p>

私の実際のコードtestでは、これはCMS主導のサイトであるため、データベースのコンテンツによって設定されます。test例として、上記のレンダラーコードを設定しているだけです(そして、コードが観察しているとおりに動作していることを証明します)。

4

1 に答える 1

3

PHP内でHTMLを使用するべきではなく、ビューファイルにマークアップを書き込む必要があります。

PHPコード内にマークアップを記述する必要がある状況に遭遇したことはありませんが、それを回避する方法が他にない場合はhtml_entity_decode()、ビュー内でいつでも関数を使用できます。

残念ながら、Cakeが希望どおりに自動的にエンコードするのを防ぐ方法がわかりません。

于 2012-12-11T12:53:08.903 に答える