表单验证需要两个字段或第三个字段
Form Validation required either two fields or a third one
我在互联网上和 Whosebug 上搜索了一段时间。
我发现了类似的需求,但我很难根据我的特定需求调整这些解决方案。
我正在使用 CodeIgniter 2,并且我已经创建了一个表单。
我正在使用 form_validation 来验证字段中输入的每个值。
现在,我有两个字段用于一段时间,第三个字段用于文件 ID。
用户必须填写 [时间段] 字段和/或 [文件 ID] 字段。
$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
}
我已经使用了以下添加到 CodeIgniter 来满足我的特定需要。
http://forum.codeigniter.com/thread-22443.html
对我来说很好用。
谢谢
我在互联网上和 Whosebug 上搜索了一段时间。 我发现了类似的需求,但我很难根据我的特定需求调整这些解决方案。
我正在使用 CodeIgniter 2,并且我已经创建了一个表单。 我正在使用 form_validation 来验证字段中输入的每个值。
现在,我有两个字段用于一段时间,第三个字段用于文件 ID。
用户必须填写 [时间段] 字段和/或 [文件 ID] 字段。
$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
}
我已经使用了以下添加到 CodeIgniter 来满足我的特定需要。 http://forum.codeigniter.com/thread-22443.html
对我来说很好用。 谢谢