我想在輸入值中顯示舊輸入。如果沒有舊的輸入,比其他顯示變量:Laravel刀片「舊輸入或默認變量」?
value="{{ old('salary_' . $employee->id) or 'Default' }}"
但如果沒有舊的輸入,它給了我1而不是默認值的!
我認爲問題與串聯有關,但我不知道如何解決它!?
我想在輸入值中顯示舊輸入。如果沒有舊的輸入,比其他顯示變量:Laravel刀片「舊輸入或默認變量」?
value="{{ old('salary_' . $employee->id) or 'Default' }}"
但如果沒有舊的輸入,它給了我1而不是默認值的!
我認爲問題與串聯有關,但我不知道如何解決它!?
or
是PHP中的比較運算符,因此您的代碼正在評估爲
true
或1.您想要的是三元
if
語句。
如前所述,or
可作爲三角if語句的簡寫使用。
但你可以(也應該)只是傳遞的默認值作爲第二個參數的功能,像這樣:
value="{{ old('salary_' . $employee->id, 'Default') }}"
正如Laravel文檔描述的:「如果你是內顯示舊的輸入刀片模板,使用舊幫手更方便:「。 因此,如果您需要添加/編輯數據表單(當您需要使用編輯表單進行編輯模式下的添加和編輯時,您需要使用來自模型(數據庫)的已加載數據)以顯示可以使用的模型(通過控制器)的值如下:
name="some_value" value="{{ $some_value or old('some_value', $the_value) }}"
其中是視圖數組中的「some_value_from_model」變量名稱。 在這種情況下,應該首先使用$ some_value來設置「value」,如果不是,它將嘗試使用舊的(來自名稱爲「some_value」的請求的值),如果不是舊的,那麼應該使用。
感謝WoodyDRN發表評論。
但是,如果以這種方式執行$ some_value或old('some_value') - 那麼如果用戶在輸入字段中輸入任何內容並提交,並且出現錯誤,那麼它會默認回到$ some_value並刪除它們中寫道。舊的('some_value',$ some_value)會解決這個問題。 – WoodyDRN
現在,這裏是有趣的事情;使用'{{$ value或$ default}}'是在Blade中執行三元語句的簡短方式([參考資料](http://laravel.com/docs/5.1/blade#displaying-data))。因此,我不確定這是對的。但是,它更清晰! –
正如在Laravel文檔:{{isset($ name)? $ name:'Default'}}簡寫方式{{$ name或'Default'}} – ArtisanBay
@ChrisForrence你是對的!你每天都會學到一些東西...更好的方法是通過傳遞默認值作爲第二個參數。 – Adunahay