在Code Igniter中更容易填充表单数据和验证数据?

时间:2010-01-31 14:29:30

标签: php codeigniter validation

我是新手代码点火器。我正在按照以下表单验证教程进行操作: 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方式来处理这种情况?

4 个答案:

答案 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。它节省了大量时间,写得非常好。