我在表单中使用了一个复选框,由于某些原因我无法存储复选框状态的值(已选中或未选中)。
我正在使用表单模型绑定。
我的表格是:
{!! 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();
但我也尝试用整数
我无法弄清楚我做错了什么
答案 0 :(得分:6)
你的这段代码
{!! 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
和fillable
数组中添加casts
密钥。像这样
protected $fillable = [ ..., 'wifi' ];
protected $casts = [ 'wifi' => 'boolean' ];
注意:您的架构代码
$table->boolean('wifi')->nullable;
nullable
不是属性,它是一个函数。所以也要更新它
$table->boolean('wifi')->nullable();
之后引用您的数据库迁移
php artisan migrate:refresh
答案 1 :(得分:0)
这取决于您如何保留此数据。
如果您使用save()
方法,请执行以下操作:
$model->wifi = isset($request->wifi);
PS:我想它应该是->nullable()