Как сделать поле ввода года и вычисление количества лет до сегодняшнего дня?

Аватар пользователя VasyOK VasyOK 29 июня в 15:54

Казалось бы, простая задача: сделать поле "Год начала практики" для пользователя и вывести "Опыт работы, лет" (сегодняшний год минус год начала практики).
Но не пойму что для этого использовать. Модуль Datetime включен. Поле типа Date создал. А где там ограничение ввода только года и диапазон вводимых лет? Неужели в 8ке нужно пользховаться костылями типа yearonly?

Комментарии

Аватар пользователя VasyOK VasyOK 29 июня в 18:01

Высчитать количество лет - это второй вопрос.
А первый - задать год в поле. И я вот не вижу, как это в 8ке сделать.

Аватар пользователя marassa marassa 29 июня в 18:03

Год - это же обычное целое число? Я бы тут с полем типа дата вообще не заморачивался.
{{ "now"|date('Y') - practice_start_year }}

Аватар пользователя marassa marassa 29 июня в 18:37

В смысле для максимального значения? Ну да, есть такое неудобство...
А для даты можно условный/расчетный максимум задать? Я там что-то не видел такого, но и не искал специально.

Аватар пользователя VasyOK VasyOK 30 июня в 8:56

Допустим в настройках поля "Год начала практики" диапазон разрешенных значений от 1970 - до 2020.
В следующем году будет от 1971 - до 2021. Но те кто ввел 1970 и через год захотят отредактировать свой профиль получат ошибку.

Аватар пользователя marassa marassa 30 июня в 9:15

VasyOK wrote: В следующем году будет от 1971 - до 2021. Но те кто ввел 1970 и через год захотят отредактировать свой профиль получат ошибку.

Ничего не понимаю. Если 1970 - валидное значение, то почему "В следующем году будет от 1971"?
Если диапазон допустимых годов подчиняется каким-то хитрым правилам, то я не вижу других выходов кроме [очень нехитрого] программирования.
PS А вот кстати модулёк интересный - может подойдёт? Field Validation

Аватар пользователя VasyOK VasyOK 30 июня в 9:17

Допустим максимальный предполагаемый стаж: 50 лет. И в следующем году минимальное значение поля будет изменено.

Аватар пользователя marassa marassa 30 июня в 9:21
2

Выбор оптимального решения задачи невозможен без чётко сформулированных на старте условий.