Решено: Валидация данных из дополнителього поля, с помощью $aValidateRules

Помогите, пожалуйста, разобраться в следующем вопросе:

1. Создаю в плагине с помощью хука дополнительное поле для ввода данных типа дата:

<input required id="topic_realdate" name="topic_realdate" type="text" value="{$_aRequest.topic_real_date|date_format:"%d.%m.%Y"}" class="date-picker input-text" readonly="readonly" />


2. Так как ввод даты будет предполагаться не совсем в стандартном формате, то пытаюсь валидировать это поле с помощью своего метода:
— дополняю массив правил валидации в сущностях своим полем с вызовом обработчика ValidateRealdate
$this->aValidateRules[]=array('topic_realdate','realdate','on'=>array('topic','link','photoset'));


— Дополняю обработчик валидации:

public function ValidateRealdate($sValue,$aParams){
        print "<script>alert('$sValue')</script>";
        if (проверка валидности) { return true; }
        return  'Ошибка валидации';
}


При публикации поста — обработчик валидации вызывается, но в него не передается значение валидируемого поля. Все остальные, стандартные поля топика — передаются успешно.

5 комментариев

avatar
В экшене нужно принять topic_realdate из отправляемой формы, задать полученные данные сущности, ну а потом идет вызов валидаторов.
github.com/livestreet/livestreet/blob/master/classes/actions/ActionTopic.class.php#L239
avatar
Блин, я друшлаг :)

Спасибо большое!
Но в доках по валидации было бы уместно иметь алгоритм принятия значений — валидации — вывода ошибок
avatar
Подскажите, пожалуйста, как при ошибке валидации иных полей сделать так, что бы значение еще не сохраненных полей не удалялось?

Например, при ошибке валидации заголовка блога, удаляется уже введеное поле даты (дополнительное поле)…
avatar
это к валидации не относится
данные в полях нужно отображать из реквеста, а для первого захода на страницу достаточно перед выводом страницы заполнять $_REQUEST нужными значениями, в коде полно таких примеров
avatar
Спасибо большое! Вопрос решен!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.