0

Gah..我花了很长时间在这方面,但我相信我已经找到了问题。

本质上,我有一个隐藏字段,当用户单击图像时会填充该字段。

要求用户单击图像,但我不希望使用 CI 表单验证类进行“必需”检查的通用表单错误消息。

因此,我很快在我的扩展表单验证类中创建了一个 image_required 函数,并设置了一个规则,以便将该规则应用于隐藏字段。

function image_required($str)
    {

    $CI =& get_instance();

    $CI->form_validation->set_message('image_required','Please click the image above.');

    if($str != '')
    {
        return TRUE;
    }
    else
    {
        return FALSE;
        } 
}

如果隐藏字段为空,则不会调用错误。

我现在相信这是因为 CI 说这个字段是空的,但它不是“必需的”,因此我们将忽略该字段的所有其他验证规则。这个对吗?

如果是这样,我该如何去要求设置此字段但有自定义错误消息?

刘海头

谢谢

4

2 回答 2

2

如果您查看“_execute”例程 (system/libraries/Form_validation.php) 的源代码 (v2.1.3),您将在第 486 行看到

     // If the field is blank, but NOT required, no further tests are necessary

所以你是对的,它需要被要求,然后它会处理你的规则。

为了修复它,以便您可以拥有一个仍然处理规则的非必需空白字段,您应该通过在 application/libraries 文件夹中创建一个名为“MY_Form_validation.php”的文件来覆盖“_execute”方法(我认为,您可能需要准确检查您如何扩展现有库),然后复制“_execute”方法并更改代码以继续处理非必需但空白的条目。

于 2013-02-27T13:48:47.243 回答
0

我确实喜欢 CI,但我不得不说这不允许所需的灵活性。有一个不能为空但不是必需的字段是完全合理的。如,您不会强制“用户必须输入一个值”,但他们不能提交空白。我认为有人对 EMPTY 和 REQUIRED 感到困惑。

1)要求:用户必须在字段中输入一个值,并且不能为空(即'') 2)空:用户不必输入一个值,但是,如果他们这样做,它不能为空。这与 REQUIRED 不同...看起来我将再次使用回调。

REQUIRED 包含两个逻辑步骤(1-> 必须输入一个值,以及 2-> 不能为空)这两个步骤应在逻辑上分开以允许 / 或。

在约束条件下,它可以是 REQUIRED,NOT NULL。或不需要,不为空。

于 2020-02-05T11:29:55.107 回答