Формат даты Laravel в форме представления (d-M-Y)
в форме отправки в шаблоне лезвия у меня есть следующая форма даты, и она отлично работает с датой по умолчанию, такой как Y-m-d
.
но я хочу показать дату, как d-M-Y
, Я попытался найти полезное решение без удачи
вот код, который работает с дата по умолчанию:
вот модель
public static $rules = [
'birthday' => 'date'
];
protected $fillable = ['birthday'];
вот метод контроллера
public function update($id)
{
$kid = Kid::findOrFail($id);
$validator = Validator::make($data = Input::all(), Kid::$rules);
if ($validator->fails())
{
return Redirect::back()->withErrors($validator)->withInput();
}
$kid->update($data);
return Redirect::to('kids/list');
}
вот лезвие шаблон
{{ Form::model($kid, ['method' => 'PATCH', 'route' => ['kids.update', $kid->id], 'files' => true], ['class' => 'form-horizontal']) }}
{{ Form::text('birthday', null, ['class' => 'form-control']) }}
{{ Form::submit('Confirm update', ['class' => 'btn btn-primary']) }}
{{ Form::close() }}
обновление
это работает для всех версий Laravel от 4.2 и новее.
для Laravel 5.1 и новее вам нужно будет установить его как отдельный пакет поскольку он больше не является частью ядра Laravel 5.
было решено, что HTML / Form builder не являются основным требованием для фреймворка, поэтому он был удален из ядра. Пакет, с которым я связан, является тем, который был включен в ядро L4 и поддерживается как отдельный пакет для совместимости и использования L5, поэтому вы можете использовать его, если захотите.
спасибо @Bogdan за это обновление.
1 ответов
Если вам нужен один формат даты для хранения БД и другой для взаимодействия с пользователем, вам нужно обработать его перед отображением и перед хранением в базе данных. Поэтому вы должны сделать что-то вроде этого:
1. Преобразуйте значение даты для ввода формы:
{{ Form::text('birthday', date('d-M-Y', strtotime($kid->birthday)), ['class' => 'form-control']) }}
2. Перед сохранением конвертируйте его в базу данных в требуемом формате:
public function update($id)
{
$kid = Kid::findOrFail($id);
// Convert birthday format to be compatible with database ISO 8601 format
$data = Input::all();
$data['birthday'] = date('Y-m-d', strtotime($data['birthday']));
$validator = Validator::make($data, Kid::$rules);
if ($validator->fails())
{
return Redirect::back()->withErrors($validator)->withInput();
}
$kid->update($data);
return Redirect::to('kids/list');
}
Если вы хотите более объектно-ориентированный способ обработки дат вы можете использовать Carbon
который уже включен Laravel.