Laravel Nova: Datetime с объединением формата и pickerFormat не работает

Я получил следующее поле даты и времени:

DateTime
    ::make('foobar')
    ->format('DD-MM-YYYY HH:mm:ss') // https://momentjs.com/docs/#/parsing/string-format/
    ->pickerFormat('d-m-Y H:i:S') // https://flatpickr.js.org/formatting/
    ->rules('required', 'date_format:Y-m-d H:i:s')
    ->firstDayOfWeek(1)

Momentjs не распознает дату. После изменения даты в консоли я получаю предупреждение:

Deprecation warning: value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.

Кажется, что momentjs не получает формат? Но я явно устанавливаю его в ресурсе nova, поэтому он должен быть передан в vue и так далее? Правильно?

Удаление ->pickerFormat() позволяет мне сохранить дату, но не отображать ее так, как я хочу, в средстве выбора.

Возможно, я делаю это совершенно неправильно, поэтому, если бы кто-то мог создать рабочий пример DateTime, заполненного с помощью format и pickerFormat, это тоже было бы здорово.

редактировать:

Еще немного информации. Я повторно перенесла Nova в режим разработки, чтобы я могла копаться с помощью инструмента Vue (расширение Chrome).

Я также безуспешно смотрел на компонент DateTime (vue). К сожалению, это закрытый код.


person Ilyes512    schedule 13.10.2019    source источник
comment
Какая строка даты вызвала это устаревание? Я имею в виду, что со стороны javascript, а не со стороны Laravel. Вы должны быть в состоянии выбрать его где-нибудь в ответе и записать его в console.log.   -  person Chuck Adams    schedule 13.10.2019
comment
Для получения сообщения об ошибке запрос / ответ не требуется. Если я создаю новый ресурс с DateTime, я замечаю странные вещи, например, когда я нажимаю на поле datetime, я не вижу время (как если бы это было поле даты). Когда я щелкаю и снова щелкаю по нему, оно показывает время. Это так раздражает. Кстати, если вы можете создать рабочую комбинацию формата и pickerFormat, я хотел бы увидеть используемые вами значения. Приведенное выше должно быть легко воссоздать, если вы просто объедините эти поля.   -  person Ilyes512    schedule 13.10.2019
comment
К сожалению, я не знаю Нову. Я только что боролся с утомительной обработкой дат Laravel и PHP вот уже несколько месяцев. Одна вещь, которую вы можете захотеть проверить, - есть ли в вашей базе данных нулевые или нулевые даты. PHP будет (ошибочно) отображать их как отрицательные даты после завершения настройки часового пояса, и это бессмысленно для синтаксического анализатора момента.   -  person Chuck Adams    schedule 13.10.2019
comment
Нет, это не имело ничего общего с php ... все это было связано с функцией JavaScript Date (), которая не понимает дату, отформатированную как день-месяц-год. Я уже нашел исправление и собираюсь продолжить здесь: github.com/laravel/ nova-issues / issues / 2037   -  person Ilyes512    schedule 15.10.2019


Ответы (1)


Используйте пакет lathanhvien / novaofdatetime, который я недавно написал. Надеюсь, тебе понравилось!

Ссылка на пакет: https://packagist.org/packages/lathanhvien/novaofdatetime

person protoproto    schedule 15.10.2019
comment
Извините, но мне больше нравится мое исправление, потому что я использую функцию, которая уже есть в flatpickr: flatpickr.js.org/examples/#human-friendly-dates Перед тем, как писать собственный код, вы должны сначала проверить, что предлагает сценарий / код, который вы расширяете. Однако создание нового пакета, который добавляет более качественное поле (форма), действительно является лучшим решением, чем разветвление Nova. - person Ilyes512; 15.10.2019