我是新手代码点火器。我正在按照以下表单验证教程进行操作: http://www.codeignitor.com/user_guide/libraries/validation.html
我发现我在视图中输入的内容过多,无法重新填充表单。例如,这是我的一个INPUT字段的样子:
<input type="text" name="email" value="<?=$this->validation->email ? $this->validation->email : $array_db_values['email'] ?>" />
基本上,当表单首次加载时,它应该显示数据库中的值。如果用户更改了值并且验证失败,则表单应该发布错误提交的值。
代码点火器是否有一种“更清洁”的方式来呈现这种输出?否则,我将在我的控制器中执行类似的操作:
$array_db_values = getdbresults();
if($_POST['submit'])
foreach($_POST as $key=>$val)
$array_db_values[$key] = $val;
这样,如果存在回发数据,它将始终覆盖数据库值。
然后我视图中的输入字段可以是:
<input type="text" name="email" value="<?=$array_db_values['email'] ?>" />
是否有更好的/本地CI方式来处理这种情况?
答案 0 :(得分:4)
我认为不存在更简单的方法,IMO在您的控制器中执行此类操作的最佳方式是:
if (isset($_POST['submit']))
{
$values = $_POST;
}
else
{
$values = getdbresults();
}
无需遍历$ _POST数组,简而言之:
$values = (isset($_POST['submit'])) ? $_POST : getdbresults();
在您看来,您也这样做:
<input type="text" name="email" value="<?=$values['email'] ?>" />
或使用Form helper:
echo form_input('email', $values['email']);
答案 1 :(得分:1)
你们有没有看过Datamapper Overzealous项目?
http://www.overzealous.com/dmz/
它处理模型级别的验证。在表单字段中,您可以将值设置为来自模型(来自数据库或之前的帖子)。
<input type='text' name='email' value='<?=$object->data_item ?>' />
我对CodeIgniter也很陌生,但添加这个库让事情变得更容易。该项目还附带了一个表单扩展,可以让事情变得更容易,但我还没有玩过多少。
答案 2 :(得分:0)
我和你正在做的完全一样。这有点麻烦,但不是太糟糕imho。
答案 3 :(得分:0)
我对表单的劳动感觉一样,在Ignited Code论坛中查看macigniter的Form Lib。它节省了大量时间,写得非常好。