当表单为空时,codeigniter 表单不报告错误
codeigniter form does not report errors when form is empty
这是我的控制器。所有字段都是必需的,并且都是表单中的下拉列表。如果所有字段都是空的(在任何下拉列表中都没有选择任何项目),则表单会重新加载而不会出现错误。如果选择了任何一个或两个或三个,它会正确报告未选择的错误,因为它们是空的。如果选择 none,它应该报告所有错误,但它没有。
$baserules = 'trim|required';
$this->form_validation->set_rules('gender', 'Gender', $baserules . '|exact_length[1]');
$this->form_validation->set_rules('category', 'Category', $baserules . '|max_length[32]');
$this->form_validation->set_rules('state', 'State', $baserules . '|exact_length[2]');
$this->form_validation->set_rules('city', 'City', $baserules . '|max_length[32]');
if ($this->form_validation->run() === FALSE) {
$this->load->view('templates/header', $data);
$this->load->view('post/post', $data);
$this->load->view('templates/footer');
} else {
redirect('search');
}
我正在使用 echo validation_errors();在视图中,它显示的是同一件事。表格为空时不会出现错误,但如果选择了四分之一、二或三,则会更正错误。这是视图:
<form action="http://example.com/index.php/post/post" method="post" accept-charset="utf-8" class="form-horizontal" id="postForm" name="postForm" role="form">
<div class="form-group col-lg-12">
<div class="centered">
Please select each of the following and click continue.
</div>
<div class="column-quarter">
<select style="width:100%;" id="gender" name="gender" >
<option value="" selected disabled>select gender</option>
<option value="f">Female</option>
<option value="m">Male</option>
</select>
</div>
<div class="column-quarter">
<select style="width:100%;" id="category" name="category" >
<option value="" selected disabled>select category</option>
<option value="cat1">cat1</option>
<option value="cat2">cat2</option>
</select>
</div>
<div class="column-quarter">
<select style="width:100%;" id="state" name="state" >
<option value="" selected disabled>select state</option>
<option value="tx">TX</option>
<option value="tx">OH</option>
<option value="tx">MI</option>
</select>
</div>
<div id="citydiv" class="column-quarter">
<select style="color: #999; width:100%;" id="city" name="city">
<option value="" disabled>select city</option>
<option value="city1">city1</option>
<option value="city2">city2</option>
<option value="city3">city3</option>
</select>
</div>
</div>
<div class="form-group col-lg-12 centered">
<button type="submit" class="btn btn-success">Continue</button>
<button type="reset" class="btn btn-success">Clear</button>
</div>
</form>
从 select
下拉列表中删除 disabled
属性。
例如,性别下拉列表应从
更改为
<option value="" selected disabled>select gender</option>
到
<option value="" selected>select gender</option>
默认禁用它们,当您提交表单时它们将不会被提交。请参阅 W3Schools 上的 提示 部分。
这是我的控制器。所有字段都是必需的,并且都是表单中的下拉列表。如果所有字段都是空的(在任何下拉列表中都没有选择任何项目),则表单会重新加载而不会出现错误。如果选择了任何一个或两个或三个,它会正确报告未选择的错误,因为它们是空的。如果选择 none,它应该报告所有错误,但它没有。
$baserules = 'trim|required';
$this->form_validation->set_rules('gender', 'Gender', $baserules . '|exact_length[1]');
$this->form_validation->set_rules('category', 'Category', $baserules . '|max_length[32]');
$this->form_validation->set_rules('state', 'State', $baserules . '|exact_length[2]');
$this->form_validation->set_rules('city', 'City', $baserules . '|max_length[32]');
if ($this->form_validation->run() === FALSE) {
$this->load->view('templates/header', $data);
$this->load->view('post/post', $data);
$this->load->view('templates/footer');
} else {
redirect('search');
}
我正在使用 echo validation_errors();在视图中,它显示的是同一件事。表格为空时不会出现错误,但如果选择了四分之一、二或三,则会更正错误。这是视图:
<form action="http://example.com/index.php/post/post" method="post" accept-charset="utf-8" class="form-horizontal" id="postForm" name="postForm" role="form">
<div class="form-group col-lg-12">
<div class="centered">
Please select each of the following and click continue.
</div>
<div class="column-quarter">
<select style="width:100%;" id="gender" name="gender" >
<option value="" selected disabled>select gender</option>
<option value="f">Female</option>
<option value="m">Male</option>
</select>
</div>
<div class="column-quarter">
<select style="width:100%;" id="category" name="category" >
<option value="" selected disabled>select category</option>
<option value="cat1">cat1</option>
<option value="cat2">cat2</option>
</select>
</div>
<div class="column-quarter">
<select style="width:100%;" id="state" name="state" >
<option value="" selected disabled>select state</option>
<option value="tx">TX</option>
<option value="tx">OH</option>
<option value="tx">MI</option>
</select>
</div>
<div id="citydiv" class="column-quarter">
<select style="color: #999; width:100%;" id="city" name="city">
<option value="" disabled>select city</option>
<option value="city1">city1</option>
<option value="city2">city2</option>
<option value="city3">city3</option>
</select>
</div>
</div>
<div class="form-group col-lg-12 centered">
<button type="submit" class="btn btn-success">Continue</button>
<button type="reset" class="btn btn-success">Clear</button>
</div>
</form>
从 select
下拉列表中删除 disabled
属性。
例如,性别下拉列表应从
更改为<option value="" selected disabled>select gender</option>
到
<option value="" selected>select gender</option>
默认禁用它们,当您提交表单时它们将不会被提交。请参阅 W3Schools 上的 提示 部分。