我正在构建一个管理实用程序,用于将大量图像添加到我正在处理的应用中。我还需要记录与图像关联的某些属性,然后将它们全部存储到数据库中。
所以基本上脚本会查看文件夹,将文件夹的内容与数据库中的记录进行比较。必须输入所有信息才能完成数据库记录,从而进行表单验证。
验证工作正常,当没有输入值时,它会提示输入缺少的字段。但是,即使字段填充,也会发生这种情况。
我正在做一些有趣的事情,这可能是原因。
因为我正在添加大量图像,所以我在for循环中创建数据,并在同一个for循环中添加验证规则。
结果如下:
http://s75151.gridserver.com/CI_staging/index.php/admin_panel/bulk_emo_update
现在我在测试验证时在表单中有默认测试值。提交按钮位于底部。我正在打印POST变量用于测试目的。
以下是代码:
function bulk_emo_update() {
$img_folder_location = 'img/moodtracker/emos/';//set an image path
$emo_files = $this->mood_model->get_emo_images('*.{png,jpg,jpeg,gif}', $img_folder_location); //grab files from folder
$emo_records = $this->mood_model->get_all_emos(); //grab records from db
$i=1; //sets a counter to be referenced in the form
$temp_emo_info = array(); //temp vairable for holding emo data that will be sent to the form
//loop through all the files in the designated folder
foreach($emo_files as $file) {
$file_path = $img_folder_location.$file;//builds the path out of the flder location and the file name
//loops through all the database reocrds for the pupose of checking to see if the image file is preasent in the record
foreach($emo_records as $record) {
//compairs file paths, if they are the
if($record->picture_url != $file_path) {
//FORM VALIDATION STUFF:
$rules['segment_radio['.$i.']'] = "required";
$rules['emo_name_text_feild['.$i.']'] = "required";
//populating the temp array which will be used to construct the form
$temp_emo_info[$i]['path'] = $file_path;
$temp_emo_info[$i]['name'] = $file;
}
}
$i++;
}
//sets the reference to validation rules
$this->validation->set_rules($rules);
//checks to see if the form has all it's required fields
if ($this->validation->run() == FALSE) { //if validation fails:
print_r($_POST);
//prepairs the data array to pass into the view to build the form
$data['title'] = 'Bulk Emo Update';
$data['intro_text'] = 'fill out all fields below. hit submit when finished';
$data['emos_info'] = $temp_emo_info;
$this->load->view('admin_bulk_emo_update_view',$data);
} else { // if it succeeds:
//printing for test purposes
print_r($_POST);
$this->load->view('form_result');
}
}
我是codeigniter和php的新手,所以如果有什么看起来很奇怪请告诉我,不要担心我的感觉我的皮肤很厚。
答案 0 :(得分:0)
if ($this->validation->run() == FALSE)
如果每次运行脚本时调用run()
类的validation
方法,它是否会返回TRUE
并运行else
?也许有不同的回报?
我发生了什么事情。一般来说,如果我遇到这样的问题,我会找出一种方法来强制我正在寻找的结果。例如在你的代码中,我强迫其他人运行...一旦我运行它,分解发生的事情让它运行。简陋的,但它对我有好处。
答案 1 :(得分:0)
您在
中使用规则数组$this->form_validation->set_rules()
错误。
如果你想传递数组中的规则,你必须坚持使用这里描述的关键名http://codeigniter.com/user_guide/libraries/form_validation.html#validationrulesasarray
所以而不是
$rules['input_name'] = "required"
试试这个:
array(
'field' => 'input_name',
'label' => 'Name that you output in error message',
'rules' => 'required'
)