2011-03-01 196 views
1

我可以使用一些指导来了解如何在CodeIgniter中进行表单验证。我正在使用CodeIgniter的内置表单验证,并且工作得很好。它返回单独的错误信息为每个字段,其中有一个错误使用和包装它在某些HTML/CSS的样式:CodeIgniter在表单提交时突出显示带有错误的字段

<?php echo validation_errors('<p class="error">'); ?> 

但我们想要做的是在哪些方面有错误的字段。 CI将允许您将错误消息放在表单错误所在的位置旁边。但是,它需要你用错误消息的价值,就像这样:

<input type="text" name="email" value="<?php echo set_value('email'); ?>" size="50" /> 

它的方式是CI的非CI语法手册,这令我费解。无论如何,我们还希望在提交表单时保留并返回来自该字段的数据。所以我做:

$email = array('name' => 'email', 'value' => $em); 
     ?><div style="padding:5px;">Email* </div><?php echo form_input($email) . '<br/>'; 

$ EM由控制器返回的是这样的:

$data['em'] = $this->input->post('email'); 

所以我的问题是,我该如何完成所有的东西在上面概括?很显然,CI的建议和我所做的相互冲突。但我不知道如何去做,所以我可以使用一些帮助。

编辑:经过进一步挖掘,我看到,你可以这样做,把错误信息字段旁边:

<?php echo form_error('email'); ?> 

但我不会在错误得到任何消息,即使我有规则编写,我得到上面的第一行代码错误。

因此,或许:

<input type="text" name="email" <?php if (form_error($email)) { echo 'class="error"'; } ?> value="<?php echo set_value('email'); ?>" size="50" />

未经检验的,如果有一个错误

+0

除非我误解,但:“但它需要你使用错误信息的值 - 不正确。 'set_value('field')'只是保持$ _POST值不会消失,如果用户提交表单并且必须返回。它与表单验证无关。 – Ross 2011-03-01 16:56:20

+0

谢谢,罗斯。我应该把它写在我的编辑中。我发现我误解了手册。 – sehummel 2011-03-01 17:00:29

回答

2

为了单独显示错误,你应该使用函数form_error('email')。并且为了获得正在检查的字段的值,请使用函数set_value('email')。要使这两个功能起作用,您必须在您的控制器中为“电子邮件”字段设置规则。您指定哪个验证规则适用于该字段。

<?php echo form_error('email'); ?> 
<input type="text" name="username" value="<?php echo set_value('email'); ?>" size="50" /> 

来源:http://codeigniter.com/user_guide/libraries/form_validation.html#individualerrors

+0

我发现在手册中,如上所述,但我没有得到任何价值返回。思考?我的规则是不是与form_error函数连接? – sehummel 2011-03-01 17:01:54

+0

控制器: $ this-> form_validation-> set_rules(“email”,“User email”,“required”); 视图: <?= form_open( “用户/登录”);> \t \t <?= form_input( “电子邮件”,SET_VALUE( '电子邮件'));> \t \t <= form_error(”电子邮件“);?> <?= form_close();?> – Dudemullet 2011-03-01 17:09:22

+0

@ shummel7845假设$ email是一个数组,您是否在文档中看到过这个? **重要说明:**如果使用数组作为表单域的名称,则必须将其作为数组提供给函数。 示例:form_error('options [size]'); – Dudemullet 2011-03-01 17:53:00

1

未经测试,但form_error($field)应返回true。值得一试?

也许还可以考虑使用JQuery或类似的来验证和设置表单字段,并使用CI作为回退(显然是为了演示目的)。

这样一来,你不CI限制要求的验证规则99%,然后别的表单验证可样式,默认CI方式可以踢。

+0

不知道我是否正确理解你。在上述情况下,上述情况没有多大意义。 – Ross 2011-03-01 16:58:22

+0

你上面说的是有道理的。我会试试看。 – sehummel 2011-03-01 17:02:42

+0

它给了我一个“非法偏移类型”的错误。我会深入研究这是什么,看看我是否可以调整你的代码。 – sehummel 2011-03-01 17:04:39

3

形式的错误($场)返回一个空字符串 '',因此更好地利用:

<input type="text" name="email" <?php if (form_error($email) !=='') { echo 'class="error"'; } ?> value="<?php echo set_value('email'); ?>" size="50" /> 

测试。

相关问题