- Вы можете использовать
match-pattern
для достижения этой цели. - Birthday - это часть библиотеки viv.contact, но она недоступна в библиотеке viv.self .
В вашем действии создайте дополнительный атрибут типа time.Date
(или концепцию с role-of
из time.Date
) для хранения Дня рождения.
Вот как кодбудет выглядеть так.
action (GetBirthDate) {
type(Constructor)
description (Collect the date selected by a user)
collect {
input (usersBirthday) {
type (BirthDate)
min (Required) max (One)
default-init {
intent {
// TO-DO Get the birthday with an intent
}
}
}
// This input will hold the value entered by the user
computed-input (birthDate) {
type (BirthDate)
min (Required) max (One)
compute {
intent {
goal: BirthDate
}
}
}
} output (BirthDate)
}
Концепция BirthDate, использованная в приведенном выше коде, выглядит следующим образом
structure (BirthDate) {
description (__DESCRIPTION__)
role-of (time.Date)
}
Ваше представление ввода будет выглядеть следующим образом.Это определяет match-pattern
, который вызывается всякий раз, когда нам нужно представление ввода для BirthDate, и что BirthDate функционирует в качестве ввода назад к действию.
Шаблоны проверки извлечения здесь: https://bixbydevelopers.com/dev/docs/dev-guide/developers/customizing-plan.match-patterns
input-view {
match: BirthDate (this) {
to-input {
GetBirthDate (action)
}
}
render {
date-picker {
initial-value (action.usersBirthday)
restrictions {
// allow selection 80 Years Ago
min-allowed ("subtractDuration(now().date, 'P80Y')")
// to allow selection 18 Years Ago
max-allowed ("subtractDuration(now().date, 'P18Y')")
}
}
}
}