CodeIgniter less_than和greater_than验证不适用于时间

时间:2016-04-27 12:23:13

标签: codeigniter codeigniter-3

我已经选择了一个旧的{"check":"success"} 项目并已迁移到CI,除了3.0.6less_than所具有的验证规则外,大部分内容现在都已稳定已被使用。

这是规则的非验证部分(其他规则正常):

greater_than

以下是如何生成时间下拉列表:

$this->form_validation->set_rules('start', 'Start time', 'required|less_than[end]');
$this->form_validation->set_rules('end', 'End time', 'required|greater_than[start]');

这是生成的html:

echo form_dropdown('start', $start_end_options, $start); 
echo form_dropdown('end', $start_end_options, $end);

这里可能出现什么问题?

非常感谢任何帮助或指导。

1 个答案:

答案 0 :(得分:1)

问题是验证例程((define (calculate lst sum1 sum2) (define (calculate lst sum1 sum2) ...) ; original implementation (let ((result (calculate lst sum1 sum2))) (if (zero? result) #f #t))) less_than)需要数字或数字字符串。使用值字符串中的冒号(:),它们不是数字字符串。

如果您使用greater_than的时间戳,您需要的验证程序将起作用。

使用函数value转换为时间戳。

strtotime("time_sting")返回1461733200。

以下是问题中值的时间戳

strtotime("00:00:00")

用于"00:00:00" = 1461733200 "00:15:00" = 1461734100 "00:30:00" = 1461735000 "00:45:00" = 1461735900 "01:00:00" = 1461736800

<select>

<select name="start"> <option value="1461733200">00:00<option> <option value="1461734100">00:15<option> <option value="1461735000">00:30<option> <option value="1461735900">00:45<option> <option value="1461736800">01:00<option> </select> less_than将适用于上述内容。

您也可以编写自己的验证方法来处理带有冒号的greater_than字符串。

value

如果字符串相等,上面的内容也将返回 public function timestring_less_than($str, $max) { return strcmp($str, $max) < 0 ? TRUE : FALSE; }

可以很容易地定义补充验证方法。

FALSE