2014-05-20 34 views
3

我正在爲我的應用程序做一個編輯表單,我想知道如果有人能告訴我如何從數據庫中獲取數據到我的文本字段。Laravel 4 - 顯示編輯表單與舊數據輸入以及數據庫信息

我可以找到我需要的基礎上,用戶點擊編輯的記錄,如果我這樣做,我可以顯示信息:

value="{{ $letter->subject }}" 

,但有問題的IM是,當我運行通過驗證並出現錯誤,它會返回數據庫信息而不是舊數據。

所以我的問題是。有沒有辦法首先提供數據庫信息,然後當它通過validatior時,驗證用戶編輯的信息?

目前驗證文本字段,並使用

Input::old('subject') 

是否有舊一點,讓我把在DB數據參數將數據返回櫃面錯誤的,即時通訊?

乾杯,

+0

BigJobbies - 我可以請建議您訪問Laracasts.com - 這是一種有償服務,但在開始使用Laravel與將涵蓋您的許多基本問題具有很大的教程。它是迄今爲止最好的Laravel培訓資源。 – Laurence

+1

p.s.答案是,當驗證失敗時,您需要在返回時使用 - > withInput() - 以允許使用舊輸入而不是數據庫填充表單。 – Laurence

+0

謝謝你,我會檢查出來 – BigJobbies

回答

7

所有你需要的是表單模型結合http://laravel.com/docs/html#form-model-binding

{{ Form::model($letter, ['route' => ['letters.update', $letter->id], 'method' => 'put']) }} 
    // your fields like: 
    {{ Form::text('someName', null, ['class' => 'someHTMLclass' ...]) }} 
    // no default values like Input::old or $letter->something! 
{{ Form::close() }} 

這樣你就會形成由$信數據(從控制器例如通過)來填充。現在

,如果你有你的countroller:

// in case of invalid data 
return Redirect::back()->withInput(); 

然後在重定向表單將輸入值首先被重新填充,而不是原始模型數據。

+1

多數民衆贊成在:) – BigJobbies

+0

真棒解決方案;) – mizan3008

10

嘿,你可以驗證並返回 - > withInput(),然後在您的實際形式,檢查是否有輸入::舊的(),並顯示它,否則從數據庫中顯示。

例如:

<input type="text" name="subject" 
value="{{ (Input::old('subject')) ? Input::old('subject') : $letter->subject }}"> 

或者你可以走另一條路,並定義變量,if語句做有規律的,而不是一個三元!由你決定你想要使用什麼!

+0

這是我的工作,謝謝。 – lighter

+0

像一個非Laravel形式的魅力 – Mindau

+0

任何專家誰可以告訴我這種輸入的價值:' id}} ] [price_15] 「類=」 形式控制「>'?這是來自數據庫的每項服務的循環。 – nclsvh

3

使其更加簡潔明快

<input type="text" name="subject" value="{{ (Input::old('subject')) ?: $letter->subject }}">