![](/img/trans.png)
[英]Either one of Two required fields in contact form 7 validation while submit in WordPress
[英]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.