我项目中的表格很少,他们被提交到公共职能部门,例如site.com/email => site.com/validate_email,但后来我意识到这不是我想要的。
现在我需要让他们提交给自己,检查并显示验证错误。
这样做的适当方法是什么?如果帖子不是空的,请检查$_POST
的空白然后调用我的新_validate_email
(//将返回true或false)?
还是别的东西不是那么noobish?:)
例如:
public function login()
{
$this->load->view('login');
}
public function login_validation()
{
$this->load->library('form_validation');
$this->form_validation->set_rules('email', 'Email', 'required|valid_email|trim|xss_clean|callback_validate_credentials');
$this->form_validation->set_rules('password','Password','required|md5');
if($this->form_validation->run())
{
//some stuff here
}
else
{
$this->load->view('login'); //or redirect()?
}
视图:
<?php $this->load->view('header'); ?>
<div class="form-container">
<?=$this->form_validation->validation_errors();?>
<?php
$form_atr = array(
'id' => 'form-set'
);
echo form_open('main/login_validation', $form_atr);//this should be 'main/login'
?>
<div class="header">
/*
here goes other parts of form
*/
</div><!--END form-container -->`
<?php $this->load->view('footer'); ?>
所以,基本上我需要将login()
和login_validation()
结合起来,但是当用户的输入不正确时,我会获得同一视图的重新加载页面并使用相同的URL并显示验证错误
我试图将验证代码放入显示表单的同一个函数中,但我无法弄清楚如何重定向或重新加载视图以显示val.errors(如果有的话)。
答案 0 :(得分:1)
所以,我认为这种方式是正确的(确实应该如此):
我通过在其前添加“_”来使我的login_validation()
变为私有,就像这样_login_validation()
我添加了一个包含if()
表单变量的$_POST
语句,并且我使用php isset()
函数对它们进行了检查,这样代码就可以确定用户何时提交表单。毕竟,如果设置了输入,我只需调用_login_validation()
,否则再次加载我的登录视图。
public function login()
{
if(isset($_POST['password']) && isset($_POST['email']))
{
$this->_login_validation();
}
else
{
$this->load->view('login');
}
}
并且不要忘记处理您的表单,以便提交到相同的网址:
echo form_open('', $form_atr);
希望有一天能帮到某人。
答案 1 :(得分:0)
首先,validation_errors()
是一种闪存数据,因此每当您重定向错误页面时,都会显示验证错误,如果您第二次重新加载它将无法显示。
从您的问题我无法理解,您是否想要显示错误。
如果你想显示错误:
然后只需将页面重定向到登录,并在登录视图中添加alert div
。
如果您不想显示错误:
然后只需删除alert div
。
*我在登录视图中看不到任何警告div,如果仍然显示验证错误,则标题视图中可能会显示alert div