我的表單中有以下複選框。這個表單模型使用綁定:在Laravel 5.1中使用複選框輸入
{!! Form::model($user, ['method' => 'PATCH', 'action' => ['[email protected]']]) !!}
{!! Form::hidden('text_only_email', false) !!}
<div class="checkbox">
<label>
{!! Form::checkbox('text_only_email', 'true') !!}
I'd prefer to receive emails as text only
</label>
</div>
<div class="form-group">
{!! Form::label('name', 'Name *', ['class' => '']) !!}
{!! Form::text('name', null, ['class' => 'form-control']) !!}
{!! errors_for('name', $errors) !!}
</div>
<button type="submit" class="btn btn-primary ">Update</button>
{!! Form::close() !!}
我控制器操作如下:
public function update(AccountRequest $request)
{
Auth::user()->update($request->all());
flash()->success('Details updated');
return redirect('account');
}
在我的用戶模式,我已將此作爲質量分配領域還有:
protected $fillable = ['name', 'text_only_email'];
基本上這是問題,如果我選中複選框並將名稱字段留空(名稱字段爲必填項),我將按照預期收到回發錯誤,並將隱藏的輸入字段設置爲true
。現在讓我們說出於某種原因,我決定在重新提交之前取消選中回覆後的複選框,或者讓我們說它是更新表單而不是創建表單,在這種情況下,隱藏字段值將保持設置爲true
,因此表單提交不會沒有按預期工作。
我可以想到如何使這項工作的唯一方法是通過使用一些jQuery來切換隱藏的值,當用戶檢查或取消選中複選框。
我知道它可以在服務器端通過使用這樣的事情來實現:$request->input('text_only_email', false)
但我想知道是否有人遇到了更優雅的解決方案,以便我不需要繼續檢查服務器端?
複選框如果未選中,請不要向服務器發送任何值。因此,以上是確保將某些值發送回服務器的技巧。 – adam78