Laravel - ConvertEmptyStringsToNull会搞乱默认值行为吗?

时间:2017-07-18 15:46:38

标签: php mysql laravel laravel-5.3

我有以下表单输入,这是必填字段。

{!! Form::text('email_local_part', old('email_local_part') ? old('email_local_part') : strstr(Auth::user()->email, '@', true), ['class' => 'form-control']) !!}

在页面加载时,我想设置一个默认值。但是,如果用户在未输入任何值的情况下提交,即删除默认值,则在表单验证时重新显示表单时,我将返回默认值。

由于ConvertEmptyStringsToNull中间件,这种情况正在发生。当我评论这个中间件时,默认值的行为是预期的。

如何在不禁用ConvertEmptyStringsToNull中间件的情况下修复,因为它需要将空值插入可空的mysql外键列中。

任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

如果使用old()辅助函数的默认值参数,则该参数有效,例如:

.form-control.is-invalid
{
background-image: none
}

您甚至可以使用Null合并运算符(PHP7 +)添加模型数据,或者如果不存在默认数据,则添加默认数据:

{!! Form::text('email_local_part', old('email_local_part', strstr(Auth::user()->email, '@', true)), ['class' => 'form-control']) !!}

这适用于评估和模型数据,也适用于空的旧输入和“新”的ConvertEmptyStringsToNull中间件。