2017-08-12 30 views
0

私はCodeigniterを使用しており、event_start_timeevent_end_timeという2つの変数を持っています。開始時刻が終了時刻よりも大きいかどうかを確認する必要があります。開始時刻が終了時刻よりも大きいことを確認してください

Codeigniterのフォーム検証ライブラリを使用してこれを検証するにはどうすればよいですか?

$this->form_validation->set_rules('event_start_time', 'Starttid', 'required|strip_tags|trim'); 
$this->form_validation->set_rules('event_end_time', 'Sluttid', 'required|strip_tags|trim'); 

答えて

0

こんにちは、このようなオプションはCIにありません。

あなたは以下のような単純な使用の比較演算子にしている:

if($event_start_time > $event_end_time){ /.../ }

0

あなたはこの近づくことができ、いくつかの方法がありますが、これは私が(コード未テスト)しようとするだろう最初のものでした。

と仮定すると、これはに検証モデルの作成)/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')); 
関連する問題