我創建一個視圖複選框:未選中的複選框用「輸入::舊的()」
Form::checkbox('test', 'true', Input::old('test', true));
取消勾選框,提交表單和之後被重定向:
return Redirect::back()->withInput()->withErrors($validation);
複選框仍然被選中 - 大概是因爲'test'
在"Input::old"
中不存在,所以它會恢復爲默認值。
關於如何最好地實現這一點的任何建議?
編輯:
我拿出得到的結果有點哈克的方式我想:
$isChecked = true; // The default state
// Check if the form has been returned "withInput"
if(Input::old())
{
$isChecked = Input::old('test', false); // If the field has old data available use that, otherwise it is unchecked
}
echo Form::checkbox('test', 'true', $isChecked);
我會寫這爲重複使用的功能,但它似乎有點痛苦,所以任何的意見/建議將是巨大的
編輯2 很抱歉,如果不明確 - 澄清:
- 形式加載複選框選中
- 我取消選中該複選框,並提交形式
- 形式不驗證,所以我回到了形式
- 複選框已重新檢查本身 - 我希望它不被選中,按用戶提交的數據
我想這是因爲,如果一個複選框未選中在後數據不含有元素
感謝您的答覆,但你有沒有測試過這個? 如果我取消選中該複選框並提交,則檢查當表單重載 - 我beieve因爲輸入::老(「測試」)不存在 –
@GuyIncognito這工作,因爲Laravel的表單生成器檢查會話,如果有是任何舊的表單數據。 'if(isset($ this-> session)&&!$ this-> oldInputIsEmpty()&& is_null($ this-> old($ name)))return false;'FormBuilder.php line 639 in laravel version 4.2.x- dev –