使用新版本的CodeIgniter;您只能在静态form_validation.php
文件中设置规则。我需要分析发布的信息(即只有他们选择了一个复选框)。只有这样我才能验证某些字段。最好的方法是什么,或者我必须使用现在弃用的旧表单验证类?
答案 0 :(得分:5)
您不仅可以在config / form_validation.php文件中设置规则。您也可以使用以下方式设置它们:
$this->form_validation->set_rules();
有关详情:http://codeigniter.com/user_guide/libraries/form_validation.html#validationrules
但是,CI具有的首选顺序是首先检查是否存在使用set_rules()设置的规则,如果没有,请查看配置文件中是否定义了规则。
因此,如果您在配置文件中添加了规则,但在操作中调用了set_rules(),则永远不会达到配置规则。
知道对于条件验证,我会在模型中有一个特定的方法,根据输入(对于该特定操作)初始化form_validation对象。我需要这样做的典型情况是验证送货地址和帐单地址(它们是相同还是不同)。
希望有所帮助。 :)
答案 1 :(得分:3)
您可以编写自己的函数来检查是否选中了所述复选框,并手动应用验证。
function checkbox_selected($content) {
if (isset($_REQUEST['checkbox'])) {
return valid_email($content);
}
}
$this->form_validation->set_rules('email', 'Email', 'callback_checkbox_selected');
答案 2 :(得分:0)
如果您想避免编写自己的验证功能,我遇到了this site,这表明,如果您使用Form Validation类动态设置规则,则可以简单地构建规则动态地设置set_rules()的字符串参数。
首先测试POST数据以确定您的条件是否满足(例如,选中复选框),然后根据需要在传递给set_rules()的规则字符串中添加“| required”。