有人可以看看我的代碼,並告訴我什麼是做錯了!我自己的驗證方法(CodeIgniter)總是返回一個錯誤,即使我認爲它不應該
這是我的視圖文件(HTML形式)
<?php $attrib = array('class'=>'form-horizontal col-lg-6')?>
<?php
if(isset($_POST['save']))
{
echo validation_errors('<div class="alert alert-danger">', '</div>');
}
?>
<?=form_open('basic_info/edit_basic', $attrib)?>
<div class="form-group">
<div class="input-group">
<div class="input-group-addon" id="label">First Name</div>
<input type="text" name="fname" class="form-control" value="<?=$fname?>">
</div>
</div>
<div class="form-group">
<div class="input-group">
<div class="input-group-addon" id="label">Middle Name</div>
<input type="text" name="mname" class="form-control" value="<?=$mname?>">
</div>
</div>
<div class="form-group">
<div class="input-group">
<div class="input-group-addon" id="label">Last Name</div>
<input type="text" name="lname" class="form-control" value="<?=$lname?>">
</div>
</div>
<div class="form-group">
<div class="input-group">
<div class="input-group-addon"id="label">Date of birth</div>
<input type="text" name="dob" class="form-control" value="<?=$dob?>">
</div>
</div>
<div class="form-group">
<div class="input-group">
<div class="input-group-addon" id="label">Gender</div>
<select name="gender" class="form-control">
<?php if($gender == true){ ?>
<option class="form-control" value="male" selected="selected">Male</option>
<option class="form-control" valu="female">Female</option>
<?php }else{ ?>
<option class="form-control" valu="female" selected="selected">Female</option>
<option class="form-control" value="male">Male</option>
<?php } ?>
</select>
</div>
</div>
<div class="form-group">
<div class="">
<button type="submit" name="save" class="btn btn-primary">Save</button>
</div>
</div>
<?=form_close()?>
這是我的控制器(形式驗證)文件 - >/basic_info/edit_basic
defined('BASEPATH') OR exit('No direct script access allowed');
class Basic_info extends MX_Controller {
public function index()
{
if($this->session->userdata('is_logged'))
{
$this->load->model('basic_info/edit_account');
$data = $this->edit_account->get_account_info();
$data->dob = date("d-m-Y", strtotime($data->dob));
$this->load->view('basic_info', $data);
}else{
redirect('welcome');
}
}
public function edit_basic()
{
$config = array(
array(
'field'=>'fname',
'label'=>'First name',
'rules'=>'alpha|min_length[2]|max_length[150]',
'errors'=>array(
'alpha'=>'Sorry a name can only have alphabets',
'min_length'=>'Sorry a name can\'t be this short',
'max_length'=>'Sorry a name can\'t be this logng'
),
),
array(
'field'=>'mname',
'label'=>'Middle name',
'rules'=>'alpha|min_length[2]|max_length[150]',
'errors'=>array(
'alpha'=>'Sorry a name can only have alphabets',
'min_length'=>'Sorry a name can\'t be this short',
'max_length'=>'Sorry a name can\'t be this logng'
),
),
array(
'field'=>'lname',
'label'=>'Last name',
'rules'=>'alpha|min_length[2]|max_length[150]',
'errors'=>array(
'alpha'=>'Sorry a name can only have alphabets',
'min_length'=>'Sorry a name can\'t be this short',
'max_length'=>'Sorry a name can\'t be this logng'
),
),
array(
'field'=>'dob',
'label'=>'Date of birth',
'rules'=>'exact_length[10]|callback_date_valid',
'errors'=>array(
'exact_length'=>'Sorry! invalid length for a date',
'date_valid'=>'Sorry! invalid date format',
),
),
array(
'field'=>'gender',
'label'=>'Gender',
'rules'=>'alpha|max_length[6]|min_length[4]',
'errors'=>array(
'alpha'=>'Sorry! Invalid gener',
),
),
);
$this->form_validation->set_rules($config);
if($this->form_validation->run() == FALSE)
{
$this->load->model('basic_info/edit_account');
$data = $this->edit_account->get_account_info();
$this->load->view('basic_info', $data);
}else{
$this->load->model('basic_info/edit_account');
$this->edit_account->edit_basic();
$this->load->model('basic_info/edit_account');
$data = $this->edit_account->get_account_info();
$this->load->view('basic_info', $data);
}
}
public function date_valid()
{
$date = $this->input->post('dob');
if(strpos($date, '/') != FALSE )
{
list($day, $month, $year) = explode("/",$date);
if($this->tarehe($day, $month, $year))
{
return true;
}else{
return false;
}
}elseif(strpos($date, '-') != FALSE){
list($day, $month, $year) = explode("-",$date);
if($this->tarehe($day, $month, $year))
{
return true;
}else{
return false;
}
}
elseif(strpos($date, '.') != FALSE)
{
list($day, $month, $year) = explode(".",$date);
if($this->tarehe($day, $month, $year))
{
return true;
}else{
return false;
}
}else{
return false;
}
}
public function tarehe($day, $month, $year)
{
$first = $day[0];
$second = $day[1];
if($first < 0){
$day = $second;
}
if($day > 0 && $day <= 31)
{
$first = $month[0];
$second = $month[1];
if($first < 0){
$month = $second;
}
if($month > 0 && $month <= 12 )
{
$limit_down = date('Y') - 17;
$limit_up = date('Y') - 50;
if($year < $limit_down && $year > $limit_up)
{
return true;
}else{
return false;
}
}else{
return false;
}
}else{
return false;
}
}
}
我試圖這樣日期的許多變化,但它總是給我錯誤我很沮喪,我沒有看到該領域的問題(dob),請幫助!
你的確切問題是什麼?你遇到什麼問題,你的預期結果是什麼? – Utkanos
日期總是返回一個格式無效的錯誤,無論如何,我甚至試圖在回調函數中返回true,但仍然得到相同的錯誤 –
您是否調試了回調函數,並且您的方法是獨立的,以確保它們是當你通過測試值時做你期望的事情? – TimBrownlaw