#vapor #leaf
#vapor #лист
Вопрос:
В списке я хочу показать даты, полученные из базы данных. Если я использую:
#Date(timeStamp: appointment.appointmentDate,localizedFormat: "E, dd-MM-yyyy")
Я ожидал бы: Ср, 30/12/2020, НО я получаю Ср, 30/12/2020, что я нахожу очень странным, поскольку я специально прошу dd-MM
Затем я попытался:
#Date(timeStamp: appointment.appointmentDate,fixedFormat: "E, dd-MM-yyyy")
с работает нормально и предоставляет мне: Ср., 30/12/2020
Тем не менее, я все еще недоволен…
- Я хочу, чтобы оно было представлено с помощью — вместо / : Ср, 30-12-2020
и
- Поскольку мое приложение будет локализовано, я хотел бы иметь контроль над отображением дня: Wed (англ.), Mer (французский), Woe (голландский) итак, как мне установить, какой язык следует использовать в Leaf? (Я знаю, как это сделать в Vapor, но я бы предпочел оставить это на усмотрение Leaf, если это возможно.)
Комментарии:
1. Я использую Leaf Tau
2. Вероятно, вам понадобится пользовательский тег, чтобы заставить его работать так, как вы хотите
3. Хорошо, спасибо 0xTim, сделаю один
Ответ №1:
Метод создания листа:
import Foundation
import Leaf
public struct DataLeafFunction: LeafFunction, StringReturn, Invariant {
public static var callSignature: [LeafCallParameter] { [
.double,
.string(labeled: nil, optional: true, defaultValue: "yyyy-MM-dd")
] }
public func evaluate(_ params: LeafCallValues) -> LeafData {
guard let timestamp = params[0].double else { return .string(params[0].string) }
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = params[1].string
let date = Date(timeIntervalSinceReferenceDate: timestamp)
return .string(dateFormatter.string(from: date))
}
}
Добавить функцию для настройки:
func configure(_ app: Application) throws {
LeafEngine.entities.use(DataLeafFunction(), asFunction: "date")
// ...
}
Используйте эту функцию в своих шаблонах:
#date(date)
#date(date, "YY/MM/dd")