Laravel 5.4 如何在获取表单时排除 url 中的空字段?

Ahm*_*Els 2 forms methods url get laravel

我用 GET 方法构建了表单,但是当我提交表单时,空字段也传递给 url,我可以排除传递给 url 的空字段吗?

例如 > 当我提交表单 url 更改为:

?jobTitle=Title&jobCompany=CompanyName&jobGovernorate=&jobLocation=&postingDate=ad
Run Code Online (Sandbox Code Playgroud)

在此示例中,jobGovernorate 和 jobLocation 为空,因此我希望在提交表单时跳过这些表单。

如果有办法获得这样的网址

?jobTitle=Title&jobCompany=CompanyName&postingDate=ad
Run Code Online (Sandbox Code Playgroud)

因为 jobGovernorate 和 jobLocation 为空

抱歉英语不好,谢谢。

ara*_*man 6

您可以使用中间件解决您的问题

   class StripEmptyParams
   {
        public function handle($request, Closure $next)
        {
            $query = request()->query();
            $querycount = count($query);
            foreach ($query as $key => $value) {
                if ($value == '') {
                    unset($query[$key]);
                }
            }
            if ($querycount > count($query)) {
                $path = url()->current() . (!empty($query) ? '/?' . http_build_query($query) : '');
                return redirect()->to($path);
            }
            return $next($request);
       }
    }
Run Code Online (Sandbox Code Playgroud)

然后调用特定路线,如下面的代码

Route::get('/search','YourController@search')->middleware(StripEmptyParams::class);
Run Code Online (Sandbox Code Playgroud)