fuelphpでコントローラーからHTMLソースをビューに渡して出力したい場合があります。
fuelphpではコントローラーからビューに渡す値をデフォルトでエスケープするようになっており、
セキュリティを高めるためにXSS(クロスサイトスクリプティング)対策が実施されています。
処理の内容によっては、HTMLソースをビューで出力したい場合があるので、
下記にコントローラーから渡したHTMLソースなどの値を、
エスケープせずにビューで出力する方法を記載します。
■ エスケープしない値をビューに渡す
Viewクラス forge()メソッドの第三引数に「false」を設定します。
【コントローラー】
$this->template->content = \View::forge('hoge/index', $data, false);
$dataの値がエスケープしないでビューに渡されます。
■ 変数を指定してエスケープしない値をビューに渡す
エスケープしない変数を指定してビューに値を渡す場合、
set_safe()メソッドを使用し値を設定します。
※$data[‘hoge_html’]の値をエスケープなしで設定した場合
【コントローラー】
$this->template->content = \View::forge('hoge/index', $data); $this->template->content->set_safe('hoge_html', $data['hoge_html']);
【ビュー】
<?php echo $hoge_html; ?>
上記は$data[‘hoge_html’]をエスケープしないで、
ビューで$hoge_htmlという変数で使用できます。
ビューに渡す全ての値をエスケープなしで渡すよりは、
set_safe()メソッドでエスケープしない値のみを指定した方が、
エスケープしない値がわかりやすいのでおすすめです。