laravel 如何利用中间件或Request类为每个表单数据删除前后空白符?

每次表单提交到后台的数据都要在方法里进行trim($value)来删除前后的空格,有没有一种方法,比如在中间件或者表单验证类中进行前置的删除空白符的操作?我是想到在中间件中可以进行这个删除操作,但是问题是,我删除了空白符以后,如何将处理后的值赋给$request这个变量再传递下去呢?
请各位大大赐教.

阅读 6k
3 个回答

使用Middleware啊,网上扒的代码,看上去没什么问题。亲测有效!

<?php

namespace App\Http\Middleware;

use Closure;

class BeforeAutoTrimmer
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $input = $request->all();
        if ($input) {
            array_walk_recursive($input, function (&$item, $key) {
                // RULES 1 FOR STRING AND PASSWORD
                if (is_string($item) && !str_contains($key, 'password')) {
                    $item = trim($item);
                }
                // RULES 2 FOR NULL VALUE
                $item = ($item == "") ? null : $item;
            });
            $request->merge($input);
        }
        return $next($request);
    }
}

最好不要写这种中间件. 用的时候再过滤trim.

新手上路,请多包涵

laravel自带的 \App\Http\Middleware\TrimStrings::class 中间件已经做了过滤

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题