我已根据CI用户指南多次尝试过但如果有空文本字段,则该过程与填写的所有字段的工作方式相同。那么另一个问题是如何在各个输入字段附近回显验证错误
这是我的代码
查看
<div id="content">
<h2>Bank account Details.</h2>
<?php
$this->load->helper('form');
$attributes = array('method'=>'post','name'=>'create_bank','id'=>'create_bank');
echo form_open_multipart('',$attributes);?>
<label>Account number : </label> <?php echo form_input('accountnumber');?><br/> <br/>
<label>Bank : </label> <?php echo form_input('bank');?><br/><br/>
<?php echo form_hidden('branch',$id);?><br/><br/>
<input type="submit" name="submit" value="Save"/>
<?php echo form_close(); ?>
</div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"> </script>
<script> //no need to specify the language
$(document).ready(function() {
$('#create_bank').on("submit",function(e) {
e.preventDefault();
$.ajax({
type: "POST",
url: "<?php echo site_url('site/create_bank'); ?>",
data: $(this).serialize(),
success: function(data){
//var site_url = "<?php echo site_url('site/home'); ?>";
window.location.href = "<?php echo site_url('site/home'); ?>";
}
});
});
});
</script>
控制器
function create_bank(){
$this->load->library('form_validation');
$this->form_validation->set_rules('accountnumber', 'Account Number', 'required');
$this->form_validation->set_rules('bank', 'Bank', 'required');
if ($this->form_validation->run() == FALSE)
{
$this->home();
}
else
{
$this->load->model('bank_account_model');
$this->bank_account_model->insert_bank();
}
}
答案 0 :(得分:2)
为了查看错误消息,您的页面应该刷新,只有下面的代码才能看到完整的验证错误:
<?php echo validation_errors() ?>
您可以将此代码放在表单上方。在这里,您通过AJAX提交表单,在这种情况下,您需要收集某些变量中的所有错误,然后将其传递到视图页面并将所有错误显示为单个变量。检查以下代码
function create_bank(){
$this->load->library('form_validation');
$this->form_validation->set_rules('accountnumber', 'Account Number', 'required');
$this->form_validation->set_rules('bank', 'Bank', 'required');
if ($this->form_validation->run() == FALSE)
{
$data['validationErrors']=validation_errors(); //Errors collected
$this->home($data); //Passed to home, you can define your function like public function home($msg=''){}
}
else
{
$this->load->model('bank_account_model');
$this->bank_account_model->insert_bank();
}
}
在视图页面上,在表单上方添加以下代码行
<?php
if(isset($validationErrors)&&($validationErrors!=''))
{
echo $validationErrors; //This is a variable that has been passed to home(via create_bank).
}
?>
现在,如果您希望捕获单个错误,则下面的代码行会给出单独的错误消息:
<?php echo form_error('fieldName')?>
所以在单独的变量中捕获个别错误并显示在哪里。