Здравствуйте, уважаемые, друпалеры. Встрял с одной интересной задачкой:
Сделал форму бронирования коттеджа, вернее это форма создания ноды для типа материала Бронь, выведенная в блок на сайте.
Там надо заполнить даты бронирования. Стоит требование вводить только ранее не занятые даты...
Поставил модуль Field_validation, не пойму как в нем это сделать.
По идее можно сделать через функцию валидации в своем модуле, но для этого надо запрос к базе данных писать видимо в коде модуля, что сложновато, была мысль сделать views с вытаскиванием ранее заполненных интервалов бронирования и подсмотреть в нем код sql запроса.
Проверка там такая, что не должен совпадать ни один день в новом интервале с ранее заполненными.
Подскажите, каким путем двигаться и может какие подсказки дадите?
Комментарии
https://www.drupal.org/project/rooms
https://www.drupal.org/project/bat
честно говоря пробовал модуль Rooms, уж очень оказался тяжеловесным для маленького регионального сайта с 6 вариантами размещения. Я все такие пошел путем создания модуля, в котором делаю валидацию формы перед отправкой.
Помогла статья: https://www.drupal.org/node/1302694
Зато познакомился с построением запросов в Базу данных с помощью DataBase API Drupal 7
http://php-include.ru/stati/database-api-drupal-7rabota-s-bazoi-dannykh-...
вот пример моей проверки вводимых дат:
$dateStart = $value->field_date_bron_value;
$dateEnd = $value->field_date_bron_value2;
$dateEnterStart = $form_state['values']['field_date_bron']['und']['0']['value'];
$dateEnterEnd = $form_state['values']['field_date_bron']['und']['0']['value2'];
if($dateEnterEnd > $dateStart AND $dateEnterEnd < $dateEnd
OR $dateEnterStart < $dateStart AND $dateEnterEnd > $dateEnd
OR $dateEnterStart > $dateStart AND $dateEnterStart < $dateEnd
OR $dateEnterStart > $dateStart AND $dateEnterEnd < $dateEnd ){
form_set_error('field_date_bron', t('Выберите незанятые даты!'));
}
}
Загадка: найдите лишнюю проверку из четырех