シェアする

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

[CakePHP2]validationErrorメッセージをエスケープさせないメモ

手短に。

$this->Form->input('name');

上記のようにForm->inputでフォーム要素を作成すると、validationエラーがあった時に自動的にエラーメッセージが表示されますが、デフォルトだと(多分)エスケープされてしまうので改行やリンクを入れることができません。

これを回避するTIPSです。

FormHelper.phpのinputメソッド

$errMsg = $this->error($fieldName, $error);
↓
$errMsg = $this->error($fieldName, $error, array('escape' => false));

libのFormHelper.phpを編集するのは良くない*[1] ので、CakePHP2系から追加されたclassNameを利用してappにmyFormHelperでも作ってメソッドをオーバーライドするとよいでしょう。

errorメソッドの方をいじって、デフォルトでエスケープしないようにするにはこう。

FormHelper.phpのerrorメソッド

$defaults = array('wrap' => true, 'class' => 'error-message', 'escape' => true);
↓
$defaults = array('wrap' => true, 'class' => 'error-message', 'escape' => false);
  1. アップデートで消えちゃうし []

シェアする

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

フォローする