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

时间:2011-02-03 21:46:53

标签: validation url cakephp

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

我知道我需要覆盖这条规则,但我并不确切地知道我需要做什么。

(另外,CakePHP API和书籍文档目前处于脱机状态。升级,我知道......)

2 个答案:

答案 0 :(得分:3)

您可以在Model类,Behavior类或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 :(得分: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;
}