2015-12-05 25 views
0

我的表單中有以下複選框。這個表單模型使用綁定:在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)但我想知道是否有人遇到了更優雅的解決方案,以便我不需要繼續檢查服務器端?

回答

0

管理加入了手動隱藏的輸入字段,而不是使用表單生成器生成它修復:<input name="text_only_email" value="" type="hidden">

0

我認爲你有兩個名稱相同的領域,text_only_email是一個隱藏的輸入,以及一個複選框

+0

複選框如果未選中,請不要向服務器發送任何值。因此,以上是確保將某些值發送回服務器的技巧。 – adam78