我想使用一个函数来验证带参数的日期......但我在配置数组中有所有验证。
config = array(
'page1/send' => array(
array(
'field' => 'name',
'label' => 'lang:name',
'rules' => 'required'
)
),
'page2/send' => array(
array(
'field' => 'name',
'label' => 'lang:name',
'rules' => 'required'
),
array(
'field' => 'date1',
'label' => 'lang:date',
'rules' => 'required|'
)
array(
'field' => 'date2',
'label' => 'lang:date',
'rules' => 'required|callback_date_compare'
)
),
我想将另一个参数传递给“callback_date_compare”,在这种情况下是另一个字段(date1)。
如果没有在数组中设置规则我可以这样做,如果“$ date1”是帖子['date1']的值并且它完美地工作:
$this->form_validation->set_rules('date2', 'lang:date', 'required|callback_date_compare[' . $date1 . ']');
我需要在数组中执行它,因为我在其中有所有验证,并且我尝试在$ config数组中以相同的方式执行它但它不起作用,如:
array(
'field' => 'date2',
'label' => 'lang:date',
'rules' => 'required|callback_date_compare[date1]'
)
感谢任何帮助。
答案 0 :(得分:3)
在你的配置数组中
array(
'field' => 'date2',
'label' => 'lang:date',
'rules' => 'required|callback_date_compare[date1]'
)
在您的日期比较回调
function date_compare($value, $field_name)
{
// Get the value in the field
$field = $_POST[$field_name];
if ($value != $this->input->post($field))
{
$this->form_validation->set_message('date_compare', 'Dates are different');
return FALSE;
}
else
{
return TRUE;
}
}
答案 1 :(得分:1)
由于您的配置是全局的,因此将函数设置为全局也是一个好主意。
在MY_Form_validation.php
中创建libraries/
:
<?php
class MY_Form_validation extends CI_Form_validation {
function date_compare($str_start, $str_key) {
$bool = ($str_start == $this->input->post($str_key));
if ( ! $bool)
$this->form_validation->set_message('date_compare', 'Dates are different');
return $bool;
}
}
然后设置规则date_compare[date1]
。
答案 2 :(得分:0)
创建一个名为date_compare的函数:
public function date_compare($date2)
{
if ($date2 != $this->input->post("date1"))
{
$this->form_validation->set_message('date_compare', 'Dates are different');
return FALSE;
}
else
{
return TRUE;
}
}
配置:
'page2/send' => array(
array(
'field' => 'name',
'label' => 'lang:name',
'rules' => 'required'
),
array(
'field' => 'date1',
'label' => 'lang:date',
'rules' => 'required|'
)
array(
'field' => 'date2',
'label' => 'lang:date',
'rules' => 'required|callback_date_compare'
)
),