繁体   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