我想覆盖标准的URL验证规则,使其更容忍URL之前或之后的空白字符。在将URL传递给标准URL验证处理程序之前,基本上使用url上的trim()函数。
我知道我需要覆盖这条规则,但我并不确切地知道我需要做什么。
(另外,CakePHP API和书籍文档目前处于脱机状态。升级,我知道......)
答案 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;
}