SmartyViewを導入したCakePHPの環境下では、普通にビューテンプレートで{$session->flash()}
と書くと、メッセージがセットされている場合に1
が一緒に出力されてしまいます。これの回避方法を考えてみました。
CakePHP 1.2.3.8166 + SmartyView 1.2.1で確認。
まずググってみました。したらやっぱりこれに関する記事はありますね。
cakePHPでsmartyviewを使うとsetFlash時に1が出力される理由は – iphloxの情報整理ノート
原因はだいたい予想していたとおりです。
さて、こちらの記事では最終的にSession
ヘルパークラスをオーバーライドして、flash
メソッドの戻り値を真偽値からメッセージの内容に置き換えています。
しかしながら、フレームワークの組み込みライブラリは決定的な不具合が無い限りなるべく改変は避けたいところ。。。
ここで俺は考えました。Smartyテンプレートだけでどうにかならんかと。
まぁ、Smarty初心者の頭で精一杯考えた答えがこれです。
{if $session->flash()}{/if}
flash
の戻り値をif
の条件式にしてしまい、出力させない。
これしか思い浮かばなかったが、これでいいんじゃないですか?
なんかもっとスマートな方法あったら教えてください!(><)
コメント