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

PHP Codeigniter中的自定义验证-需要两个字段之一,php,forms,validation,codeigniter,Php,Forms,Validation,Codeigniter,我的表格有一个手机和一个电话区。我希望用户填写其中一个字段,或两个字段,但不能两者都填写 我在其他语言中也看到过这样做的方法,但是我能就如何使用Codeigniter提供一些建议吗?只需在客户端进行JS验证,在服务器端进行PHP验证(或者使用CI的表单助手)。。。无论如何,PHP应该是这样的: if ($_POST['cellphone'] == '' OR $_POST['phone' == '') { // do stuff like make an notification, alert,

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


我在其他语言中也看到过这样做的方法,但是我能就如何使用Codeigniter提供一些建议吗?

只需在客户端进行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
}
您可以这样做:

$this->form_validation->set_rules('phone', 'Your validation message.', 'callback__phone_check'); $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 } 功能_phone_check(){ //检查电话和手机字段。 //确保一个字段不是空的,并相应地返回 }
希望这对您有所帮助。

我只是想给您提供一些快速的代码片段。我想做到这一点,这个问题是我在谷歌搜索的第一个条目之一。我从其他答案中获得灵感,以下是我所做的对我有用的事情(YMMV):

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


希望这是有用的。

使用callback将手机与手机进行比较我应该在哪里执行此操作?在视图中,controller?@jQuery.PHP.Magento.com应位于控制器中。。!我已经在config文件夹中创建了一个包含所有验证的数组。那么,对于这种类型的验证,我应该做些什么呢@Shomz我们需要的是规则而不是核心php@Darshanambaliya你可以问另一个问题。遗憾的是,我认为这不再有效了。我认为如果规则中没有“必需”,那么就不会检查其他规则(我想是为了效率)。
$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) != '');
}