[英]Codeigniter form_validation birthdate
我有这个html :(还要添加我的性别部分,并询问其是否正确)
<?php $form_error = $this->session->flashdata('error'); ?>
<div class="form-group">
<label for="gender">Gender</label>
<select class="form-control" id="gender" name="gender">
<option disabled selected value="">select a gender</option>
<option value="Male">Male</option>
<option value="Female">Female</option>
<option value="Other">Other</option>
</select>
<div id="form_error"><?php echo $form_error('gender'); ?></div>
</div>
<div class="form-group">
<label for="birthdate">Birthdate</label>
<input class="form-control" id="birthdate" name="birthdate" type="date">
<div id="form_error"><?php echo $form_error['birthdate']; ?></div>
</div>
在我的帐户控制器中:
$this->form_validation->set_rules('username', 'Username', 'trim|required|is_unique[users.username]');
$this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[8]|max_length[20]');
$this->form_validation->set_rules('confirm_password', 'Confirm Password', 'trim|required|matches[password]');
$this->form_validation->set_rules('gender', 'Gender', 'trim|required|in_list[Male,Female,Other]');
$this->form_validation->set_rules('birthdate', 'Birthdate', 'trim|required');
if($this->form_validation->run() == FALSE){
$form_error = array('username' => form_error('username'),
'password' => form_error('password'),
'confirm_password' => form_error('confirm_password'),
'gender' => form_error('gender'),
'birthdate' => form_error('birthdate'));
$this->session->set_flashdata('error', $form_error);
redirect('pages/register_user');
页面控制器:
public function register_user(){
$data['title'] = 'Register';
$this->load->view('template/header',$data);
$this->load->view('template/navbar');
$this->load->view('pages/registration');
$this->load->view('template/footer');
}
我的问题是,我将生日的规则放在哪? 我只是通过$this->input->post('birthdate');
回显了从中获取的值$this->input->post('birthdate');
值是这样的“ YYYY-MM-DD”
好处是,它已经在phpmyadmin date接受的语法中,但是我不知道如何验证此日期,因为在codeigniter用户指南中,规则参考中的表单验证是
数字-但值包含破折号。 Alpha_dash-但它假定值是不是字母数字。
我尝试了matchs规则,但是idk如何设置它以匹配语法而不是像这样的值:matches [YYYY-MM-DD]
您将需要在规则中设置回调方法。 在此回调方法中执行验证逻辑。
请参阅验证回调笨参考这里
像这样的方法调用方法“ example_method”
$this->form_validation->set_rules('birthdate', 'Birthdate', 'trim|required','callback_example_method');
然后,我不知道您想要验证输入的内容。 如果要将字符串转换为日期,或查看输入内容是否可以成为有效日期,请签出php strtotime()。 此示例仅验证输入字符串可以转换为某种日期。
public function example_method($birthday)
{
// Check string is valid date
$birthday = date("YYY-MM-DD", strtotime($birthday))
if ($birthday)
{
return TRUE;
}
else
{
return FALSE;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.