2016-11-22 50 views
0

如果驗證表單請求失敗,但如果用戶未提交表單,那麼使用數據庫中的默認值,如何重新填充複選框?Laravel Blade - 如果驗證失敗,重新填充複選框?

假設我們有名稱輸入字段和複選框。

輸入名稱

<input type="text" name="name" value="{{ old('name', $delivery->name) }}"> 

複選框:

<input type="checkbox" name="use_shipping" @if(old('use_shipping', $delivery->use_shipping) == "1") checked="checked" @endif value="1"> 

輸入的名稱字段是否正常工作重新填充通過數據庫中的值或重新填充值,如果驗證請求失敗。

如果驗證失敗,該複選框不重新填充。如何解決這個問題?

例如,如果我沒有輸入名稱(輸入字段),我取消選中了use_shipping複選框 - 它應該在提交表單(驗證失敗)後重新填充複選框。

+0

什麼是'value'屬性後的額外雙引號(「) – Michel

+0

@Michel Oop我編輯了這個問題,問題仍然存在 –

回答

2

出現這種情況,是因爲瀏覽器不追加非勾選後數據中的複選框,因此在重新填充表單時使用$delivery->use_shipping的值。

您可以添加一個隱藏的輸入與use_shipping「默認」值來解決這個問題:

<input type="hidden" name="use_shipping" value="0"> 
<input type="checkbox" name="use_shipping" value="1" {{ old('use_shipping', $delivery->use_shipping) ? 'checked="checked"' : '' }}> 

這會工作得很好,當複選框被選中,是因爲後者的值將覆蓋前者。

-1

試試這個:

<input type="checkbox" name="use_shipping" @if(old('use_shipping') || (old('use_shipping', null) == null && $delivery->use_shipping)) checked @endif value="{{ old('use_shipping') || (old('use_shipping', null) == null && $delivery->use_shipping)) }}"> 

*使用運輸應該是一個布爾

+0

我不認爲這會起作用 - 'checked'不接受一個值。 –

+0

這不行,我們需要通過'$ delivery-> use_shipping'來檢查默認值,如果表單沒有被提交,如果表單已經提交併且驗證失敗,它需要通過'舊的()' –

+0

Ooooh,我已經更新了我的答案,希望對你有幫助 –

0

這應該做的伎倆:

<input name="use_shipping" type="checkbox" value="1" {{ old('use_shipping', $delivery->use_shipping) ? 'checked' : '' }} />

+0

同樣的事情,如果驗證失敗,它不會重新填充複選框,如果驗證失敗,它會從數據庫中重新編譯而不是舊的值。 –

相關問題