【问题标题】:Trim function before validating form input in Codeigniter 4在 Codeigniter 4 中验证表单输入之前修剪功能
【发布时间】:2021-07-04 18:50:13
【问题描述】:

使用 Codeigniter 3,可以使用“trim”作为验证规则。 Codeigniter 4 似乎不再可能。 那么如何在验证之前修剪输入值,以防用户在输入的开头或结尾留下空格?

$validation->setRule('username', 'Username', 'trim|required|min_length[3]');

我想使用自定义规则,但这些函数只能返回 true 或 false。他们不能修改输入。另一个解决方案是使用 php trim 功能,但我看不到在哪里使用它。 感谢您的帮助!

【问题讨论】:

    标签: forms validation input trim codeigniter-4


    【解决方案1】:

    我猜您是在直接验证发布请求。对于您的需要,我将验证您修改后的数组,而不是直接验证发布请求。

    codeigniter 4 验证的一大优点是您可以实际验证任何内容。与只能使用它来验证 $_POST 数据的 codeigniter 3 不同。

    假设您有两个字段,用户名和密码,并且想要修剪用户名。

    在您将获得发布日期的控制器中,您将执行以下操作。

    $validation =  \Config\Services::validation();
    $validation->setRules([
       'username' => 'required',
       'password' => 'required|min_length[10]'
    ]);
    
    $data = $this->request->getPost();
    $data['username'] = trim($data['username']);
    
    if (!$validation->run($data)) {
        // handle validation errors
    }
    

    如果您在模型中进行验证,我不确定验证是否在回调之前运行,但值得一试。因此,您将在 beforeInsert 回调中定义一个函数并在那里处理修剪。

    这里有更多关于回调的信息:

    https://codeigniter.com/user_guide/models/model.html#specifying-callbacks-to-run

    如果这不起作用,您甚至可以从模型中的验证规则中删除用户名,然后在 beforeFind 和 beforeUpdate 函数中自己验证用户名并修剪它。

    【讨论】:

    • 感谢您的回答。我决定使用 javascript 函数在更改时自动修剪输入值。
    • @micthi 建议不要这样做,前端验证不应替代后端验证。它们应该相互补充。
    • Javascript 只是修剪值,但在提交时,验证由 Codeigniter 运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-19
    • 2018-02-10
    • 1970-01-01
    • 2016-05-16
    • 2015-10-12
    • 2021-06-08
    • 2021-03-10
    相关资源
    最近更新 更多