あなたはこの近づくことができ、いくつかの方法がありますが、これは私が(コード未テスト)しようとするだろう最初のものでした。
と仮定すると、これはに検証モデルの作成)/application/config/validation/validate.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
// CI not normally available in config files,
// but we need it to load and use the model
$CI =& get_instance();
// Load the external model for validation of dates.
// You will create a model at /application/models/validation/time_logic.php
$CI->load->model('validation/time_logic');
$config['validation_rules'] = [
[
'field' => 'event_start_time',
'label' => 'Starttid',
'rules' => 'trim|required|strip_tags'
],
[
'field' => 'event_end_time',
'label' => 'Sluttid',
'rules' => [
'trim',
'required',
'strip_tags'
[
'_ensure_start_time_end_time_logic',
function($str) use ($CI) {
return $CI->time_logic->_ensure_start_time_end_time_logic($str);
}
]
]
]
];
2で次の設定ファイルを作成する)
1 CodeIgniterの3 /アプリケーション/モデル/お使いのコントローラ、モデル、あるいはどこそれはあなたがポストを検証することである、負荷の検証/ time_logic.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Time_logic extends CI_Model {
public function __construct()
{
parent::__construct();
}
public function _ensure_start_time_end_time_logic($str)
{
// Making an assumption that your posted dates are a format that can be read by DateTime
$startTime = new DateTime($this->input->post('event_start_time'));
$endTime = new DateTime($str);
// Start time must be before end time
if($startTime >= $endTime)
{
$this->form_validation->set_message(
'_ensure_start_time_end_time_logic',
'Start time must occur before end time'
);
return FALSE;
}
return $str;
}
}
3)と検証ルールを適用し、代わりにスペックのもしあなたがそれをやっていたらどうしたらいい?
$this->config->load('validation/validate');
$this->form_validation->set_rules(config_item('validation_rules'));