Fuelphp:コントローラーから渡したHTMLソースをビューで出力する

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()メソッドでエスケープしない値のみを指定した方が、
エスケープしない値がわかりやすいのでおすすめです。

  • このエントリーをはてなブックマークに追加

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です