簡體   English   中英

Laravel 5表單模型綁定復選框值

[英]Laravel 5 Form Model Binding Checkbox Values

我在表單中使用了一個復選框,由於某些原因我無法存儲復選框狀態的值(已選中或未選中)。

我正在使用表單模型綁定。

我的表格是:

{!! Form::model($profile, ['method' => 'PATCH', 'action' => ['ProfilesController@update', $profile->id]]) !!}

<div class="form-group">
  {!! Form::label('wifi', 'Wifi') !!}
  {!! Form::checkbox('wifi','yes', $profile->wifi) !!}Wifi
</div>

{!! Form::close() !!}

我的架構:

$table->boolean('wifi')->nullable();

但我也嘗試用整數

我無法弄清楚我做錯了什么

你的這段代碼

{!! Form::checkbox('wifi','yes', $profile->wifi) !!}Wifi

正在產生這個

<input checked="checked" name="wifi" type="checkbox" value="yes">

這意味着您將值yes發送到服務器,但您的列數據類型不是varchar / text。 您將其設置為布爾值。

將代碼更新為此,因為您正在使用form model binding因此無需彈出它,laravel將為您執行此操作。

{!! Form::checkbox('wifi') !!} Wifi

此外 ,將您的wifi密鑰包含在fillablecasts數組中。 像這樣

protected $fillable = [ ..., 'wifi' ];

protected $casts = [ 'wifi' => 'boolean' ];

注意:您的架構代碼

$table->boolean('wifi')->nullable;

nullable不是屬性,它是一個函數。 所以也要更新它

$table->boolean('wifi')->nullable();

在那之后引用您的數據庫遷移

php artisan migrate:refresh

這取決於你是如何試圖保持這些數據。

如果您正在使用save()方法,請執行以下操作:

$model->wifi = isset($request->wifi);

PS:我想應該是->nullable()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM