我正在尝试让验证类在bootstrap模式窗口中的codeigniter中工作。但是,包含代码的控制器中的函数不会被表单打开函数看到。
这是模态形式:
<div class="modal fade" id="login" tabindex="-1" aria-labelledby="modalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
<h4 class="modal-title" id="myModalLabel">Login</h4>
</div>
<div class="modal-body">
<?php echo validation_errors();?>
<?php echo form_open('Site/login_validation');?>
<form>
<div class="input-group">
<span class="input-group-addon"></span>
<input type="text" name="email" class="form-control" placeholder="Email">
</div></br>
<div class="input-group">
<span class="input-group-addon"></span>
<input type="text" name="password" class="form-control" placeholder="Password">
</div></br>
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="submit" value="login" class="btn btn-primary">Login</button>
</br>
</form>
<?php echo form_close();?>
<div class="modal-footer">
<a href="#" >Forgot your password</a>
</div>
</div>
</div>
</div>
</div>
这是控制器中的表单:
public function login_validation(){
$this->load->helper(array('form','url'));
$this->load->library('form_validation');
$this->form_validation->set_rules('email','','required');
$this->form_validation->set_rules('password','','required');
if ($this->form_validation->run() == false){
$this->load->view('view_index');
}else {
redirect('Site/view_member');
}
}
答案 0 :(得分:0)
正如jcorry指出的那样,您正在复制<form>
和</form>
标签。如果您使用的是form_open()
和form_close()
,则无需在视图html中包含它们。
form_open()使用从配置首选项
构建的基本URL创建一个开始表单标记form_close()生成结束标记。
我怀疑不正确的嵌套会让您的浏览器感到困惑,因为浏览器试图关闭标签本身。如果您查看源代码,您可能会看到如下内容:
<form action="Site/login_validation">
</form><!-- This closing tag added automatically by your browser -->
<form>
<!-- your form fields ... -->
</form>
</form>
包含您的字段的第二个<form>
元素没有任何操作,因此当您点击提交时,它不与您的控制器交谈。删除HTML中的<form>
和</form>
,告诉我们该怎么做。