如何验证codeigniter中的数组值 [英] how to validate array value in codeigniter

查看:114
本文介绍了如何验证codeigniter中的数组值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的表单工作经验是以组织名称,部门名称,职位和持续时间等动态输入。

 < tr> 
< td>< span class =serial_no> 1< / span>< / td>
< td>< input type =textname =organization []size =50/>< / td>
< td>< input type =textname =department []size =50>< / td>
< td>< input type =textname =positions []size =40>< / td>
< td>< input type =textname =duration []>< / td>
< / tr>

在CI中验证时,我执行了以下操作:

  $ organization = $ this-> input-> post('organization'); 
$ department = $ this-> input-> post('department');
$ positions = $ this-> input-> post('positions');
$ duration = $ this-> input-> post('duration');

// printr($ organization);
for($ i = 0; $ i< count($ organization); $ i ++)
{
$ org = $ organization [$ i];
$ dept = $ department [$ i];
$ pos = $ positions [$ i];
$ dura = $ duration [$ i];

$ this-> form_validation-> set_rules($ org,Organization,trim | xss_clean | max_length [1]);
$ this-> form_validation-> set_rules($ dept,Department,trim | xss_clean | max_length [50]);
$ this-> form_validation-> set_rules($ pos,Position,trim | xss_clean | max_length [40]);
$ this-> form_validation-> set_rules($ dura,Duration,trim | xss_clean | integer);
}

并显示错误:


$ b b

 <?php 
echo form_error(organization []);
echo form_error(department []);
echo form_error(positions []);
echo form_error(duration []);
?>

现在问题是它不会将持续时间验证为整数。



当我验证如下:

  $ this-> form_validation-> set_rules('organization []',Organization,trim | xss_clean | max_length [50] 
$ this-> form_validation-> set_rules('department []',Department,trim | xss_clean | max_length [50]);
$ this-> form_validation-> set_rules('positions []',Position,trim | xss_clean | max_length [40]);
$ this-> form_validation-> set_rules('duration []',Duration,trim | xss_clean | numeric);

它不允许我提交表单,因为它需要的持续时间是强制性的,而不是。



如何解决?



欢迎任何帮助/建议。感谢。

解决方案

它不允许我提交表单 If所以,它听起来像一个错误。



暂时,你可以检查 duration [] $ c> empty 或不:

  if(!empty($ _ POST ['duration' )){
$ this-> form_validation-> set_rules('duration []',Duration,trim | xss_clean | numeric);
}



如果找到主要解决方案,我会更新我的答案。 >




更新:
这是我预期的错误,我在CodeIgniter存储库中打开了PR ,这将解决这个问题。


I have in my form work experience which is added dynamically with input as organisation name, department name, position and duration.

<tr>
    <td><span class="serial_no">1</span></td>
    <td><input type="text" name="organization[]" size="50"/></td>
    <td><input type="text" name="department[]" size="50"></td>
    <td><input type="text" name="positions[]" size="40"></td>
    <td><input type="text" name="duration[]"></td>
</tr>

While validating in CI I did the following:

$organization = $this->input->post('organization');
$department   = $this->input->post('department');
$positions    = $this->input->post('positions');
$duration     = $this->input->post('duration');

//printr($organization);
for($i = 0; $i < count($organization); $i++) 
{
    $org = $organization[$i];
    $dept = $department[$i];
    $pos = $positions[$i];
    $dura = $duration[$i];

    $this->form_validation->set_rules($org, "Organization", "trim|xss_clean|max_length[1]");
    $this->form_validation->set_rules($dept, "Department", "trim|xss_clean|max_length[50]");
    $this->form_validation->set_rules($pos, "Position", "trim|xss_clean|max_length[40]");
    $this->form_validation->set_rules($dura, "Duration", "trim|xss_clean|integer");
}

And displayed error as:

<?php
    echo form_error("organization[]");
    echo form_error("department[]"); 
    echo form_error("positions[]"); 
    echo form_error("duration[]");
?> 

Now the problem is it doesn't validate the duration as integer. Even if I put some random alpha characters it doesn't show errors.

When I validate as follows:

$this->form_validation->set_rules('organization[]', "Organization", "trim|xss_clean|max_length[50]");
$this->form_validation->set_rules('department[]', "Department", "trim|xss_clean|max_length[50]");
$this->form_validation->set_rules('positions[]', "Position", "trim|xss_clean|max_length[40]");
$this->form_validation->set_rules('duration[]',"Duration", "trim|xss_clean|numeric");

It doesn't let me submit the form as it takes duration as mandatory which it isn't.

How do I solve it?

any help/suggestions are welcome. thanks.

解决方案

It doesn't let me submit the form If so, It sounds like a bug.

Temporarily, you can check whether duration[] array is empty or not:

if (! empty($_POST['duration'])) {
    $this->form_validation->set_rules('duration[]',"Duration", "trim|xss_clean|numeric");
}

I'll update my answer if I found the main solution.


Update: This is a bug as I expected, I opened a PR at CodeIgniter Repository, that would fix this issue.

这篇关于如何验证codeigniter中的数组值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆