【发布时间】:2011-10-21 09:32:58
【问题描述】:
情况如下:我的网站有一个复杂的地址表单,其中包含门牌号、街道、电话等多个输入项。该表单用于站点周围的许多不同地方。
有几种不同的情况会影响此表单:
- 有时,表单需要“新鲜”显示,所有输入为空白,等待添加新地址
- 其他时候,表单需要预-使用从数据库中提取的地址填充自身以进行编辑
- 最后,表单可能需要重新填充自身,如果用户输入了地址,提交了表单,但忘记添加他们的门牌号 - 在这种情况下,它需要返回什么刚刚输入但显示表单验证警告。
不过……
- 我只想一个 HTML 表单用于整个站点使用的地址 - 以节省重复代码
- 我希望这个表单能够处理上面显示的每个不同场景 - 保存重复代码
这是表单的示例输入:
<div class="input">
<input id="house_number" name="house_number" value="<?php echo set_value('house_number', $details->row('house_number'));?>"/>
<label for="house_number">House Number</label>
</div>
如您所见,这解决了场景 2 和场景 3 - 默认情况下,代码 echo set_value($house_number, $details->row('house_number'));?> 将使用从 MySQL 结果集 (1) 中提取的数据预先填充自身,或者 - 如果它检测到某些东西已经已提交 - 使用存储在 house_number 中的先前数据重新填充自身。
我的问题是:我怎样才能在场景 1 中内置,最好不要重复任何代码、添加嵌套 if 等?每当您“从头开始”加载表单时,PHP 会输出关于 $details 未设置的错误,这是可以理解的——因为没有什么可以从数据库或我的模型中提取出来。
我的模型返回一个 MySQL 结果集,但我在想你能用空白行初始化这个结果集吗?但我不确定这是否是正确的做法。
谢谢!
杰克
【问题讨论】:
标签: php mysql forms codeigniter dry