データベースにデータを挿入した後、セッションを設定し、ページを別のページにリダイレクトします。セッションが smarty に設定されている場合、別のページにメッセージが表示されます。すべて問題ありません。
{if $smarty.session.insert===true}
Thanks
{/if}
メッセージを印刷した後、どうすればセッションの設定を解除できますか?
テンプレートでそれを行うべきではなく、smarty はこれに対して機能しません。ただし、本当にそれをしなければならない場合、私が見る唯一の方法は次のとおりです。
{php}
unset($_SESSION['insert']);
{/php}
{php} タグの間に入れるものはすべて、通常の php スクリプトとして smarty によって実行されます。
Smartyはテンプレートエンジンです。セッション変数を処理することは想定されていません。unset($_SESSION['...'])
Smartyの外部で、PHPスクリプトで実行する必要があります。
smarty テンプレートを表示している php ファイルで、display 関数の後に設定を解除します。
if(isset($_POST['postdata'])) {
$_SESSION['insert'] = 'success';
}
$smarty->display('test.html');
unset($_SESSION['insert']);
テンプレートファイルで
{if isset($smarty.session.insert)}
{$smarty.session.insert}
{/if}
テンプレートからそれを行うべきではありません。以下のように PHP で行います。
unset($_SESSION['session_var_name']);
本当にスマートにやりたいのなら、試してみました{$smarty.session.message|unset}
か?うまくいくかどうかはわかりませんが、検討する価値があるかもしれません。