PHP Codeigniter中的自定义验证 - 需要两个字段之一

时间:2011-11-14 02:23:56

标签: php forms validation codeigniter

我的表格有手机和手机领域。我希望用户填写其中一个字段,或两者都填写,但不能同时填写。

我已经看到了用其他语言进行操作的方法,但是我可以就如何使用Codeigniter进行一些建议吗?

3 个答案:

答案 0 :(得分:7)

你可以这样做:

$this->form_validation->set_rules('phone', 'Your validation message.', 'callback__phone_check');

制作一个功能:

function _phone_check() {
   //check for phone and cellphone field.
  //make sure one field is not empty and return accordingly
}

希望有所帮助

答案 1 :(得分:4)

只是想以你的方式抛出一些快速的代码片段。我想完成这个,这个问题是我搜索时谷歌的第一个条目之一。我从其他答案中获取灵感,这是我为我工作的(YMMV):

$this->form_validation->set_message('contactVerify', 'Either Phone or Email is required');
...
$this->form_validation->set_rules('phone', 'Phone', 'trim|callback_contactVerify[email]|xss_clean');
$this->form_validation->set_rules('email', 'Email', 'trim|callback_contactVerify[phone]|valid_email|xss_clean');
...
public function contactVerify($contact, $otherField) {
  return ($contact != '' || $this->input->post($otherField) != '');
}

由于这是一个非常简单的验证函数,我预先设置了错误消息,因此我不必在验证函数中设置它。我通过方括号传入我要检查的另一个字段作为第二个参数。

希望这很有用。

答案 2 :(得分:-4)

只需在客户端进行JS验证,在服务器端进行PHP验证(或使用CI的表单助手)......无论如何,PHP应该是这样的:

if ($_POST['cellphone'] == '' OR $_POST['phone' == '') {
// do stuff like make an notification, alert, etc... and take users back to the form
}