Php Laravel通过窗体将0作为值传递,并获取null
因此,我有一个简单的表单,带有select input,其中有一个值为“0”的选项:Php Laravel通过窗体将0作为值传递,并获取null,php,laravel,forms,http-post,Php,Laravel,Forms,Http Post,因此,我有一个简单的表单,带有select input,其中有一个值为“0”的选项: 呜呜呜呜 按我 当我从select input中选择唯一选项时,在控制器中,我得到的是null而不是“0”数字(我用dd()方法检查过)。这个数字是否可能在集成中间件或其他地方丢失?或者这是一个PHP技巧?好的,答案是在我的中间件中我有以下代码: public function handle($request, Closure $next) { if (!Auth::check()) {
呜呜呜呜
按我
当我从select input中选择唯一选项时,在控制器中,我得到的是null而不是“0”数字(我用dd()方法检查过)。这个数字是否可能在集成中间件或其他地方丢失?或者这是一个PHP技巧?好的,答案是在我的中间件中我有以下代码:
public function handle($request, Closure $next)
{
if (!Auth::check()) {
return redirect('/blablabla');
}
foreach ($request->input() as $key => $value) {
if (empty($value)) {
$request->request->set($key, "");
}
}
return $next($request);
}
问题在于
空($value)
。我将empty()
更改为!isset()
和所有已修复的内容您正在执行的dd($request->all())
和您在状态下得到的null
?@lagbox是的,我得到了“”,而不是“0”,默认情况下没有任何内容会将0
更改为null
/”
,默认情况下唯一合适的东西是TrimStrings
中间件,它只是修剪字符串strings@lagbox有没有其他解释,为什么我得到的是“”,而不是“0”,我可以像“-1”、“1”和除“0”之外的其他任何东西一样通过首先,您为什么要这样做?似乎您正在尝试撤消convertEmptyStringsToull
中间件的功能doing@lagbox它将null转换为“”空字符串。可能是在互联网上找到的。您在哪里可以找到convertEmptyStringsToull
中间件?我似乎找不到它被添加到Kernel.php中的全局中间件堆栈中,您使用的是什么版本的Laravel?为什么要显式地将null
s转换为空字符串?
public function handle($request, Closure $next)
{
if (!Auth::check()) {
return redirect('/blablabla');
}
foreach ($request->input() as $key => $value) {
if (empty($value)) {
$request->request->set($key, "");
}
}
return $next($request);
}