【问题标题】:Custom Validation in PHP Codeigniter - one of two fields requiredPHP Codeigniter 中的自定义验证 - 需要的两个字段之一
【发布时间】:2011-12-28 08:00:21
【问题描述】:

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

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

【问题讨论】:

  • 使用回调比较手机和手机

标签: php forms validation codeigniter


【解决方案1】:

只需在客户端进行 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
}

【讨论】:

  • 我在 config 文件夹中创建了一个包含所有验证的数组。那么我应该怎么做这种类型的验证。 @Shomz
  • 我们需要一个规则而不是核心 php
  • @Darshanambaliya 你可以问另一个问题。
【解决方案2】:

你可以这样做:

$this->form_validation->set_rules('phone', '你的验证信息。', 'callback__phone_check');

并制作一个函数:

功能 _phone_check() { //检查电话和手机字段。 //确保一个字段不为空并相应返回 }

希望有帮助

【讨论】:

【解决方案3】:

只是想按照自己的方式编写一些快速代码 sn-ps。我想完成这个,这个问题是我搜索时谷歌的第一个条目之一。我从其他答案中获得灵感,这就是我所做的对我有用的事情 (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) != '');
}

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

希望这是有用的。

【讨论】:

  • 遗憾的是,我认为这不再有效。我认为如果规则中不存在“必需”,则不会检查其他规则(我认为是为了效率)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-05
  • 1970-01-01
  • 1970-01-01
  • 2013-02-28
  • 2021-10-02
相关资源
最近更新 更多