Kar*_*Sho 12 php codeigniter codeigniter-form-helper
我使用笨用PHP.我正在使用以下表格,
<?php
echo form_open('/register/create_new', $form_params);
?>
DOB: <input type="text" id="dob" name="reg[dob]">
<input type="submit" value="Create Account" />
</form>
Run Code Online (Sandbox Code Playgroud)
在这里,#dob是dd-mm-yyyy格式.
我的验证码是,
array(
'field' => 'reg[dob]',
'label' => 'DOB',
'rules' => 'required'
)
Run Code Online (Sandbox Code Playgroud)
如何设置rules正确的日期验证?
Win*_*nks 19
您可以通过创建callback_date_valid()函数来使用CodeIgniters回调函数,该函数检查日期是否有效.
要检查它是否有效,您可以使用PHP的checkdate函数
array(
'field' => 'reg[dob]',
'label' => 'DOB',
'rules' => 'required|date_valid'
)
function callback_date_valid($date){
$day = (int) substr($date, 0, 2);
$month = (int) substr($date, 3, 2);
$year = (int) substr($date, 6, 4);
return checkdate($month, $day, $year);
}
Run Code Online (Sandbox Code Playgroud)
Joh*_*oha 14
我有一个非常干净的解决方案.您可以扩展codeigniters表单验证库.
通过将MY_Form_validation.php文件放在application/libraries文件夹中来完成此操作.此文件应如下所示:
class MY_Form_validation extends CI_Form_validation {
public function __construct($rules = array())
{
parent::__construct($rules);
}
public function valid_date($date)
{
$d = DateTime::createFromFormat('Y-m-d', $date);
return $d && $d->format('Y-m-d') === $date;
}
}
Run Code Online (Sandbox Code Playgroud)
要添加错误消息,请转到application/language /文件夹并打开form_validation_lang.php文件.在文件末尾的$ lang数组中添加一个条目,如下所示:
$lang['form_validation_valid_date'] = 'The field {field} is not a valid date';
Run Code Online (Sandbox Code Playgroud)
请注意,此处的键必须与函数名称(valid_date)相同.
然后在你的控制器中你使用它作为任何其他表单验证函数,例如'required'
$this->form_validation->set_rules('date','Date','trim|required|valid_date');
Run Code Online (Sandbox Code Playgroud)
你可以做到 regex
$this->form_validation->set_rules('reg[dob]', 'Date of birth', 'regex_match[(0[1-9]|1[0-9]|2[0-9]|3(0|1))-(0[1-9]|1[0-2])-\d{4}]');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47969 次 |
| 最近记录: |