【问题标题】:How do I validate URL, but ignore if http:// or blank?如何验证 URL,但如果 http:// 或空白则忽略?
【发布时间】:2011-01-24 15:43:03
【问题描述】:

我想验证 URL 的表单字段。我已将该字段的默认值设置为 http://。当用户没有输入 URL 并离开 http:// 时,它会显示无效 URL。 URL 不是必需的,因此如果它只是 http://,则不应显示错误消息。如果此人提交 http:// 作为 URL,我如何使其忽略?

谢谢

【问题讨论】:

    标签: php cakephp cakephp-1.3 cakephp-routing


    【解决方案1】:

    http:// 不是有效的 url,所以如果你想允许它,有 2 个选项

    1. 创建一个custom validation rule,对于真实的url + http://返回true
    2. 使用before validate callback 并将url 字段设置为空白,如果它只是http://

    希望对你有帮助

    编辑

    我忘了:你不需要设置 required 但'allowEmpty' => true

    required -> 表单必须包含发送到服务器的字段 xyz

    allowEmpty-> 字段可能为空


    我在上面添加了回调函数的链接,但无论如何..这里是:

    在你的模型类中(我只是假设它是User):

    class User extends AppModel {
        ..
    
        function beforeValidate() {
            if (isset($this->data['User']['url']) && $this->data['User']['url'] == 'http://') {
                $this->data['User']['url'] = '';
            }
            return true;
        }
        ..
    }
    

    【讨论】:

    • 如何使用 beforeValidate()?我找不到任何例子。它是一个函数吗?如何拉出提交的变量:$data['SubmitedForm']['URL']?谢谢
    • 尝试使用 $this->data[$this->alias][...] 因为类名可以改变...
    猜你喜欢
    • 2019-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-09
    • 2015-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多