У меня есть этот код,
<div class = "form-group">
<label class = "col-sm-2 control-label" for = "date-created">Date Created</label>
<div class = "col-sm-10">
@if (isset($post->created_at))
<input type = "date" class = "form-control" id = "date-created" name = "created_at" value = "{{ date('d/m/Y', strtotime($post->created_at)) }}">
@else
<input type = "date" class = "form-control" id = "date-created" name = "created_at" placeholder = "Enter the date the blog post created">
@endif
</div>
</div>
Я пытаюсь отобразить дату из базы данных в поле ввода типа, позволяющем пользователю редактировать дату.
но это было показано при рендеринге в браузере
Что с этим лучше всего делать?
Это может быть простая проблема, но я не могу найти простого объяснения, почему у меня это не работает.
все еще не работает ....
Вы пробовали это сначала с <input type = "text"> по умолчанию, чтобы убедиться, что это просто проблема форматирования с полем type = "date" или действительно что-то не так с вашим шаблоном?






Laravel поставляется с Углеродный несбот, включенным из коробки, чтобы помочь форматировать дату. Даты в laravel можно легко отформатировать так:
{{\Carbon\Carbon::parse($post->created_at)->format('d/m/Y') }}
{{\Carbon\Carbon::parse($post->created_at)->format('jS M Y') }}
Просто показываю несколько вариантов. Вы можете получить полную документацию по форматам даты здесь
В вашем случае код должен быть
@if (isset($post->created_at))
<input type = "date" class = "form-control" id = "date-created" name = "created_at" value = "{{ \Carbon\Carbon::parse($post->created_at)->format('d/m/Y') }}">
@else
<input type = "date" class = "form-control" id = "date-created" name = "created_at" placeholder = "Enter the date the blog post created">
@endif
Извините ... Я кое-что забыл ... Сейчас вношу правку. Я добавил ::parse, чтобы сообщить углероду, что нужно разбирать дату.
хм, я действительно не знаю, почему это не работает, я пробовал комбинацию значений вне laravel, но получил то же самое
Отредактировано в соответствии с вашей ситуацией
@AntonyMN Напоминаю, что created_at и updated_at, если они подключены к модели в Laravel, по умолчанию являются переменными Carbon, поэтому вам не нужно будет вызывать их снова (через ::parse()). Вы должны просто вызвать $post->created_at->format()
Единственное, что вы делаете неправильно, - это формат даты, который соответствует YYYY-MM-DD согласно Руководство разработчика Mozilla для области <input type = "date">. Таким образом, вам нужно только переключить строку формата даты на Y-m-d.
В качестве альтернативы вы также можете использовать подход Carbon, упомянутый AntonyMN, и использовать функцию toDateString(). Если вы установите поле created_at как часть полей $date с protected $dates = ['created_at']; в вашей модели, вам даже не потребуется анализировать строку даты в объект Carbon. Модель просто вернет объект Carbon по запросу.
Кстати, я не думаю, что использование заполнителя работает в поле ввода даты из-за фиксированного формата ввода.
Попробуйте изменить формат с:
date('d/m/Y',...наdate('d-m-Y',. stackoverflow.com/questions/40038521/…