0

使用新版本的 CodeIgniter;您只能在静态form_validation.php文件中设置规则。我需要分析发布的信息(即仅当他们选择复选框时)。只有这样,我才希望验证某些字段。最好的方法是什么,或者我必须使用现在已弃用的旧表单验证类?

4

3 回答 3

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 对象。我需要这样做的典型情况是验证送货地址和账单地址(它们是相同还是不同)。

希望有帮助。:)

于 2009-02-28T14:17:01.053 回答
3

您可以编写自己的函数来检查是否选择了所述复选框,并手动应用验证。

function checkbox_selected($content) {
    if (isset($_REQUEST['checkbox'])) {
        return valid_email($content);
    }
}

$this->form_validation->set_rules('email', 'Email', 'callback_checkbox_selected');
于 2009-02-27T14:01:56.560 回答
0

如果您想避免编写自己的验证函数,我遇到了这个网站,该网站建议,如果您使用表单验证类动态设置规则,您可以简单地将规则字符串参数构建到 set_rules() 动态。

您首先测试 POST 数据以确定您的条件是否满足(例如选中复选框),然后根据需要在传递给 set_rules() 的规则字符串中添加“|required”。

于 2011-07-18T00:28:18.763 回答