2015-11-11 33 views
12

我想在輸入值中顯示舊輸入。如果沒有舊的輸入,比其他顯示變量:Laravel刀片「舊輸入或默認變量」?

value="{{ old('salary_' . $employee->id) or 'Default' }}" 

但如果沒有舊的輸入,它給了我1而不是默認值的!

我認爲問題與串聯有關,但我不知道如何解決它!?

回答

25

or是PHP中的比較運算符,因此您的代碼正在評估爲 true或1.您想要的是三元 if語句。

如前所述,or可作爲三角if語句的簡寫使用。

但你可以(也應該)只是傳遞的默認值作爲第二個參數的功能,像這樣:

value="{{ old('salary_' . $employee->id, 'Default') }}" 
+2

現在,這裏是有趣的事情;使用'{{$ value或$ default}}'是在Blade中執行三元語句的簡短方式([參考資料](http://laravel.com/docs/5.1/blade#displaying-data))。因此,我不確定這是對的。但是,它更清晰! –

+0

正如在Laravel文檔:{{isset($ name)? $ name:'Default'}}簡寫方式{{$ name或'Default'}} – ArtisanBay

+0

@ChrisForrence你是對的!你每天都會學到一些東西...更好的方法是通過傳遞默認值作爲第二個參數。 – Adunahay

0

正如Laravel文檔描述的:「如果你是內顯示舊的輸入刀片模板,使用舊幫手更方便:「。 因此,如果您需要添加/編輯數據表單(當您需要使用編輯表單進行編輯模式下的添加和編輯時,您需要使用來自模型(數據庫)的已加載數據)以顯示可以使用的模型(通過控制器)的值如下:

name="some_value" value="{{ $some_value or old('some_value', $the_value) }}" 

其中是視圖數組中的「some_value_from_model」變量名稱。 在這種情況下,應該首先使用$ some_value來設置「value」,如果不是,它將嘗試使用舊的(來自名稱爲「some_value」的請求的值),如果不是舊的,那麼應該使用。

感謝WoodyDRN發表評論。

+5

但是,如果以這種方式執行$ some_value或old('some_value') - 那麼如果用戶在輸入字段中輸入任何內容並提交,並且出現錯誤,那麼它會默認回到$ some_value並刪除它們中寫道。舊的('some_value',$ some_value)會解決這個問題。 – WoodyDRN