首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >form_validation生日

form_validation生日
EN

Stack Overflow用户
提问于 2018-02-10 01:33:41
回答 1查看 1.1K关注 0票数 0

我有这个html:(我也会添加我的性别部分,并询问它是否正确)

代码语言:javascript
复制
<?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>

在我的账户主计长中:

代码语言:javascript
复制
$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');

页控制器:

代码语言:javascript
复制
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');从其中提取的值,其值类似于“YYYY”。

好处是phpmyadmin date接受的语法中已经包含了它,但是我不知道如何验证这个日期,因为在代码点火器中,规则引用中表单验证的用户指南是

数值-但值包含破折号。Alpha_dash -但它假设值是alpha数字,而不是。

我尝试了匹配规则,但是idk如何将其设置为匹配语法,而不是像:matchesYYYY这样的值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-10 01:55:57

您需要在规则中设置回调方法。此回调方法是执行验证逻辑的地方。

请参阅CodeIgniter引用中的验证回调这里

类似于这样的调用方法'example_method‘

代码语言:javascript
复制
  $this->form_validation->set_rules('birthdate', 'Birthdate', 'trim|required','callback_example_method');

然后,我不知道您想要做什么,直到验证输入。如果要将字符串转换为日期,或查看输入是否可以成为有效日期,请签出php strtotime()。此示例仅验证输入字符串是否可以转换为某种日期。

代码语言:javascript
复制
        public function example_method($birthday)
        {
            // Check string is valid date

            $birthday = date("YYY-MM-DD", strtotime($birthday)) 

            if ($birthday)
            {

                    return TRUE;
            }
            else
            {
                    return FALSE;
            }
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48716371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档