我有一组要验证的字段。这是场景。
假设我有以下字段。由于名字是相同的,我把一个数字添加到最后。
job_title_1 company_name_1 responsibilities_1
job_title_2 company_name_2 responsibilities_2
job_title_3 company_name_3 responsibilities_3
在我看来,我使用(for statement)循环并在字段名称的末尾分配这个数字,然后在我的控制器中传递变量“ctr = 3”。
我使用像这样的验证
$validation_errors = array();
for ($i = 1; $i <= $ctr; $i++)
{
$this->form_validation->set_rules('career_objectives_' . $i, 'Career objectives title', 'trim|required');
$this->form_validation->set_rules('job_title_' . $i, 'Job title / position', 'trim|required');
$this->form_validation->set_rules('company_name_' . $i, 'Company', 'trim|required');
$this->form_validation->set_rules('from_date_employment_' . $i, 'From date of employment', 'trim|required');
$this->form_validation->set_rules('to_date_employment_' . $i, 'To date of employment', 'trim|required');
$this->form_validation->set_rules('responsibilities_' . $i, 'Responsibilities type', 'trim|required');
$this->form_validation->set_error_delimiters('<div class="valid-err">', '</div>');
if ($this->form_validation->run() == FALSE)
{
$validation_errors[$i] = validation_errors();
}
}
我决定将validation_errors放在一个数组中,这样我就可以在我的视图中得到它并将字符串错误放在一个单独的位置。我现在的问题是,即使job_title_1只有错误。从1到3的所有job_title都产生了错误。我认为validation_errors()在下一个循环中并不清楚。
任何帮助都会非常感激。
我已将其发布在CodeIgniter论坛中,但我没有找到合适的解决方案。
答案 0 :(得分:3)
您不想在循环中运行$this->form_validation->run()
。它(正确地)运行三次,并且由于验证在表单验证运行时无法清除,因此它会验证job_title_1
三次。
我认为你是在尝试特定于发生错误的编号雇员/部分的用户。更好的做法是使用特定于字段的错误:
form_error('job_title_1');