[CakePHP] $session->flash()すると出てくる1を表示させない方法

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

SmartyViewを導入したCakePHPの環境下では、普通にビューテンプレートで{$session->flash()}と書くと、メッセージがセットされている場合に1が一緒に出力されてしまいます。これの回避方法を考えてみました。
CakePHP 1.2.3.8166 + SmartyView 1.2.1で確認。

1が出る様子

まずググってみました。したらやっぱりこれに関する記事はありますね。

cakePHPでsmartyviewを使うとsetFlash時に1が出力される理由は – iphloxの情報整理ノート

原因はだいたい予想していたとおりです。
さて、こちらの記事では最終的にSessionヘルパークラスをオーバーライドして、flashメソッドの戻り値を真偽値からメッセージの内容に置き換えています。
しかしながら、フレームワークの組み込みライブラリは決定的な不具合が無い限りなるべく改変は避けたいところ。。。

ここで俺は考えました。Smartyテンプレートだけでどうにかならんかと。

まぁ、Smarty初心者の頭で精一杯考えた答えがこれです。

{if $session->flash()}{/if}

flashの戻り値をifの条件式にしてしまい、出力させない。
これしか思い浮かばなかったが、これでいいんじゃないですか?

なんかもっとスマートな方法あったら教えてください!(><)

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

SNSでもご購読できます。




コメントを残す