我用Laravel做了一些中间件,它们在受保护的$except =['password']下也能正常工作;忽略具有except数组的字段。
问题仅在于livewire组件中的字段,它们工作并且不忽略这些字段。
我找到了这个官方的\App\Http\Middleware\TrimStrings::class,中间件可以很好地与livewire组件一起工作,并且可以忽略$except '字段。
我尝试复制TrimStrings类实现以了解我错过了什么,但不幸的是,问题仍然存在:$except '字段不会被忽略。
这是我的TrimStrings类的副本实现:
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Foundation\Http\Middleware\TransformsRequest;
class TrimStrings2 extends TransformsRequest
{
protected $except = [
'current_password',
'password',
'password_confirmation',
];
protected static $skipCallbacks = [];
public function handle($request, Closure $next)
{
foreach (static::$skipCallbacks as $callback) {
if ($callback($request)) {
return $next($request);
}
}
return parent::handle($request, $next);
}
protected function transform($key, $value)
{
if (in_array($key, $this->except, true) || !is_string($value)) {
return $value;
}
return preg_replace('~^[\s]+|[\s]+$~u', '', $value) ?? trim($value);
}
public static function skipWhen(Closure $callback)
{
static::$skipCallbacks[] = $callback;
}
}
1条答案
按热度按时间wkyowqbh1#
改变这个
到这个
在
app/Http/Kernel.php
中