对于smarty的html_options函数,有没有办法避免必须这样做(除了不使用smarty)?Smarty html_options
{if $smarty.post}
{html_options name=option_1 options=$options selected=$smarty.post.option_1}
{else}
{html_options name=option_1 options=$options}
{/if}
我意识到,它不会在模板上显示,但它似乎是一个不好的做法,留下未在模板中定义的东西(它也填补了我的错误日志与有关未定义指标噪音)。
[编辑]
我所寻找的是一个办法做到这一点像这样不具有未定义的索引错误显示,以及减少在模板文件中的Smarty的噪音。
{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}
但是那么什么是智者的保持所有后的跟踪点/ get/request/cookie/server/constants,如果你不能在模板中使用它们而不增加你必须编写的代码量?
当你把一条直线放入int时,你直接得到的错误是什么? – mcgrailm 2010-03-25 12:14:37
当post变量为空时,我得到“NOTICE:Undefined index:option_1”我意识到这不是一个可怕的可怕错误,但它似乎马虎,留在那里。 – SeanJA 2010-03-25 13:09:28
另一个问题是,如果检查html,通知将显示在选择框中。 – SeanJA 2010-03-25 13:21:55