【发布时间】:2015-09-02 11:35:13
【问题描述】:
我们在 Laravel 5 中遇到了一个奇怪的问题,它拒绝存储复选框值。
我们正在调整与 Laravel 5 捆绑在一起的现有注册表单,并且我们正在添加一个 optin 复选框,但即使我们将其添加为迁移文件中的字段,模型似乎也无法将其识别为字段。
对此的任何帮助将不胜感激。
迁移文件:
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('first_name');
$table->string('last_name');
$table->string('email')->unique();
$table->string('password', 60);
$table->date('dob');
$table->boolean('optin')->nullable();
$table->rememberToken();
$table->timestamps();
});
}
然后我们将其添加到 register.blade.php 文件中:
<div class="form-group">
<label class="col-md-4 control-label">Optin</label>
<div class="col-md-6">
<input type="checkbox" class="form-control" name="optin">
</div>
</div>
在创建用户模型时,我们检查复选框的值并分配它。
protected function create(array $data)
{
//this does return 1 or 0 as expected
$optin = ($data["optin"] == "on") ? 1 : 0;
return User::create([
'first_name' => $data['first_name'],
'last_name' => $data['last_name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'dob' => $data['dob'],
'optin' => $optin
]);
}
但此时该字段为空。数据库中没有输入任何值...
【问题讨论】:
-
所以
$optin甚至没有保存为 0? -
否,该字段为空。即使在 PHP tinker 中尝试过,它仍然拒绝将 $user->optin = 1 添加到用户对象,但会让我分配其他名称!但是尝试更改名称,但实际上仍然没有将值添加到数据库中!
标签: php laravel checkbox laravel-5