2014-12-02 129 views
7

在刀片模板中的提交表單中,我有以下日期表單,它的默認日期如Y-m-d正常工作。提交表格中的Laravel日期格式(d-M-Y)

但我想告訴喜歡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() }} 

UPDATE

這適用於從4.2和更新所有Laravel版本。

對於Laravel 5.1及更新版本,您需要將它安裝爲separate package,因爲它不再是Laravel 5內核的一部分。

決定HTML /表單構建器不是框架的核心要求,因此它從核心中被刪除。我鏈接的軟件包是L4內核中包含的軟件包,並且將其作爲L5兼容性和使用情況的單獨軟件包進行維護,因此,如果您選擇這樣做,則可以安全使用該軟件包。

感謝@Bogdan的更新。

回答

11

如果您需要一種數據庫存儲的日期格式,另一種用於用戶交互,則需要在顯示它之前以及在將其存儲到數據庫之前進行處理。所以,你應該做這樣的事情:

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'); 
} 

如果您想要更加面向對象的日期處理方式,您可以使用Laravel已包含的Carbon

+0

你如何在輸入字段中輸入日期? (我也更新了一些與處理日期時間值相關的提及)。 – Bogdan 2014-12-02 17:38:38

+0

另外,如果您發佈負責創建/更新數據庫條目的代碼,它可能會有所幫助。 – Bogdan 2014-12-02 17:48:55

+0

我已根據您發佈的代碼更新了我的答案。 – Bogdan 2014-12-02 19:09:19