smarty の html_options 関数について、これを行う必要を回避する方法はありますか (smarty を使用しない以外に)?
{if $smarty.post}
{html_options name=option_1 options=$options selected=$smarty.post.option_1}
{else}
{html_options name=option_1 options=$options}
{/if}
テンプレートに表示されないことはわかっていますが、テンプレートに定義されていないものを残すのは悪い習慣のようです (また、未定義のインデックスに関するノイズでエラー ログがいっぱいになります)。
[編集]
私が探しているのは、未定義のインデックスエラーが表示されることなく、テンプレートファイルのスマートなノイズを減らすことで、このようにする方法です。
{html_options name=option_1 options=$options selected=$smarty.post.option_1}
変更された html_options プラグインである可能性が高いと思いますか?
[編集]
@mmcgrailのアイデアによると:
{if isset($smarty.post.option_1)}
{assign var=selected value=$smarty.post.option_1}
{else}
{assign var=selected value=$default.option_1}
{/if}
{html_options name=option_1 options=$options selected=$selected}
テンプレートに新しい変数を作成しているため、これはさらに悪いことだと思います。
私はこれがうまくいくと思います:
また:
<?php
//[... snip ...]
$option_1 = isset($_POST['option_1'])? $_POST['option_1'] : $default['option_1'];
$template->assign('option_1', $option_1);
$template->display('my_template.tpl');
そしてテンプレートで:
{html_options name=option_1 options=$options selected=$option_1}
しかし、書く必要のあるコードの量を 2 倍にせずにテンプレートでそれらを使用できない場合、すべての post/get/request/cookie/server/constants をスマートに追跡するポイントは何ですか?