Php Laravel通过窗体将0作为值传递,并获取null

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,其中有一个值为“0”的选项:


呜呜呜呜
按我

当我从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);
}