コントローラで設定したもの、ビューに記述しているものなど出力されたhtml全て
を一括で変換することは、予期しない変換が発生するため **おすすめできません ** が以下のようにして可能です。
1. テンプレートで変換する
Viewのキャプチャー機能を利用してコンテンツを記録し、書き換えます。
読んでね: ビューブロックの使用 | ビュー - 3.8
Template/Layout/default.ctp
php
1<?php
2// (...snip...)
3$this->start('convertContent'); // キャプチャー開始
4?>
5<!-- テンプレート内容 -->
6<?php
7$this->end(); // キャプチャー終了
8$content = $this->fetch('convertContent'); // キャプチャー内容を取得
9// 変換処理
10$content = mb_convert_kana($content, 'KV');
11// ... その他の変換処理
12echo $content; // 変換した内容を出力
13?>
2. View.afterLayout イベントで変換する
イベントフックを利用し、描画内容を書き換えます。
読んでね: ビューイベント | ビュー - 3.8 と イベントシステム - 3.8
php
1EventManager::instance()->on('View.afterLayout', function (Event $event) {
2 $view = $event->getSubject();
3 $content = $view->Blocks->get('content');
4 // 変換処理
5 $content = mb_convert_kana($content, 'KV');
6 // ... その他の変換処理
7 $view->Blocks->set('content', $content);
8});
9
改めて書きますが、レンダリング結果全体への変換処理は予期しない変換が発生し描画内容が壊れる可能性があるためおすすめできません。
可能なかぎりデータソースからの取得時に変換しておくか、Controllerでの値セット前に出力用のオブジェクトを通して変換したり、テンプレートで明示的に個々の要素に対して変換するようにすべきです。