Переопределить правило проверки URL, чтобы допускать пробелы в конце URL - PullRequest
0 голосов
/ 04 февраля 2011

Я хотел бы переопределить стандартное правило проверки URL-адреса, чтобы сделать его более терпимым к символу пробела до или после URL-адреса.В основном используйте функцию trim () в URL-адресе, прежде чем передавать его в стандартный обработчик проверки URL.

Я знаю, что мне нужно переопределить это правило, но я не совсем уверен, где и как мне это нужно делать.

(Кроме того, API-интерфейс CakePHP и документация к книгам в настоящее время отключены. Обновления, я знаю ...)

Ответы [ 2 ]

3 голосов
/ 04 февраля 2011

Вы можете добавить пользовательские правила проверки в классы модели, классы поведения или класс 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 голос
/ 04 февраля 2011

Зачем тебе это делать? Просто убедитесь, что все опубликованные данные всегда обрезаны. В любом случае, это чище и безопаснее.

У меня есть компонент, который делает это в 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...