0

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 をスマートに追跡するポイントは何ですか?

4

2 に答える 2

1

これを試して

 {if isset($smarty.post)}
     {html_options name=option_1 optins=$options selected=$smarty.post.option_1}
 {/if}

私はそれがあなたの質問に答えると思います

于 2010-03-24T20:24:51.743 に答える
-1

別のプラグインを作成しないと、私が望むことは不可能であることがわかりました...おそらく、次のようなことをします:

{html_options name=option_1 options=$options selected=$default.option_1 post=option_1}
于 2010-03-25T11:28:46.407 に答える