簡體   English   中英

表單驗證需要兩個字段或第三個字段

[英]Form Validation required either two fields or a third one

我已經在互聯網上和StackOverflow上搜索了一段時間。 我發現了類似的需求,但是我很難適應那些解決方案以滿足我的特定需求。

我正在使用CodeIgniter 2,並且已經創建了一個表單。 我正在使用form_validation來驗證在字段中輸入的每個值。

現在,我有2個字段用於一段時間,第三個字段用於fileID。

用戶必須填寫[time of period]字段或[fileID]字段,或兩者都填。

    $this->form_validation->set_rules('idx_start', 'lang:idx_start', 'trim');           
    $this->form_validation->set_rules('idx_end', 'lang:idx_end', 'trim');       
    $this->form_validation->set_rules('fileID', 'lang:fileID', 'trim');

我試圖研究回調並創建自定義驗證規則,但似乎無法找到滿足我需求的簡單有效的方法。

在此先感謝您的幫助。

您總是可以創建不同的規則數組。 我在幾個項目中都這樣做。

所以在您的控制器中是這樣的:

if($condition1){
    $rules = $this->my_model->rules1;
} else {
    $rules = $this->my_model->rules2;
}
$this->form_validation->set_rules($rules);

“ my_model”中的$ rules1和$ rules2看起來像這樣:

public $rules1 = array(
    'idx_start' => array(
        'field' => 'idx_start',
        'label' => 'start',
        'rules' => 'trim|required'
    ),
    'idx_end' => array(
        'field' => 'idx_end',
        'label' => 'end',
        'rules' => 'trim|required'
    ),
    'fileID' => array(
        'field' => 'fileID',
        'label' => 'file id',
        'rules' => 'trim'
    )
);

public $rules2 = array(
    'idx_start' => array(
        'field' => 'idx_start',
        'label' => 'start',
        'rules' => 'trim'
    ),
    'idx_end' => array(
        'field' => 'idx_end',
        'label' => 'end',
        'rules' => 'trim'
    ),
    'fileID' => array(
        'field' => 'fileID',
        'label' => 'file id',
        'rules' => 'trim|required'
    )
);

或者,他們必須是。 希望這可以幫助!

也許有更好的方法,但是這可能行得通。

$this->form_validation->set_rules('fileID', 'lang:fileID', 'trim')
if ( $this->form_validation->run() != true  ) {
    $this->form_validation->set_rules('idx_start', 'lang:idx_start', 'trim');           
    $this->form_validation->set_rules('idx_end', 'lang:idx_end', 'trim');
}
if ( $this->form_validation->run() == false  ) {
    // form failed
} else {
    // form passed
}

我已經使用了Add in CodeIgniter之后的代碼來滿足我的特定需求。 http://forum.codeigniter.com/thread-22443.html

對我來說很好。 謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM