CakePHP

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

CakePHP

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の条件式にしてしまい、出力させない。
これしか思い浮かばなかったが、これでいいんじゃないですか?

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

スポンサーリンク
記事を書いた人

システムえんじにゃー🐈
趣味はエレキギター、自転車など。作曲したい。
World of Warshipsやってます。
記事に関する質問はお気軽にどうぞ。

surface0 (さーふぇす)をフォローする

コメント

タイトルとURLをコピーしました