覆盖 URL 验证规则以容忍 URL 末尾的空格

问题描述 投票:0回答:2

我想重写标准 URL 验证规则,使其更能容忍 URL 之前或之后的空白字符。基本上在将 url 传递给标准 URL 验证处理程序之前使用 trim() 函数。

我知道我需要推翻该规则,但我不知道我需要在哪里以及如何做到这一点。

(另外,CakePHP API 和书籍文档目前已离线。升级,我知道......)

php validation url cakephp
2个回答
3
投票

您可以在模型类、行为类或 AppModel 类中添加自定义验证规则:

http://book.cakephp.org/view/150/Custom-Validation-Rules#Adding-your-own-Validation-Methods-152

由于您想覆盖现有方法,只需为其指定与原始方法相同的名称和签名即可。像这样的事情可能会成功:

function url($check, $strict = false) {
    return Validation::url(trim($check), $strict);
}

1
投票

你为什么要这么做? 只需确保所有发布的数据始终被修剪即可。 无论如何,这更干净、更安全。

我有一个组件在 beforeFilter 中执行此操作:

/** DATA PREPARATION **/
if (!empty($controller->data) && !Configure::read('DataPreparation.notrim')) {
    $controller->data = $this->trimDeep($controller->data);
}

trimDeep方法:

/**
 * @static
 */
function trimDeep($value) {
    $value = is_array($value) ? array_map(array(&$this, 'trimDeep'), $value) : trim($value);
    return $value;
}
© www.soinside.com 2019 - 2024. All rights reserved.