Laravel 5 如何在数据提交时替换中间件中的数据
在Laravel5.8应用程序中,在提交带有数据的表单后,我需要清除数据,比如双空格,所以我创建了中间件 带清算代码: app/Http/Middleware/WorkTextString.php:Laravel 5 如何在数据提交时替换中间件中的数据,laravel-5,middleware,Laravel 5,Middleware,在Laravel5.8应用程序中,在提交带有数据的表单后,我需要清除数据,比如双空格,所以我创建了中间件 带清算代码: app/Http/Middleware/WorkTextString.php: <?php namespace App\Http\Middleware; use Closure; use App\Http\Traits\funcsTrait; use function PHPSTORM_META\type; class WorkTextString { u
<?php
namespace App\Http\Middleware;
use Closure;
use App\Http\Traits\funcsTrait;
use function PHPSTORM_META\type;
class WorkTextString
{
use funcsTrait;
public function handle($request, Closure $next, $strip_tags_excluding= false )
{
$inputDataArray = $request->all();
\Log::info($request->all());
$stripTagsExcludingArray= $this->pregSplit('/ /',$strip_tags_excluding);
foreach( $inputDataArray as $next_field_name=>$next_field_value ) {
if ( !empty($next_field_value) and is_string($next_field_value) ) {
$skip_strip_tags= in_array($next_field_name,$stripTagsExcludingArray);
$inputDataArray[$next_field_name] = $this->workTextString($next_field_value, $skip_strip_tags);
}
}
\Log::info('$inputDataArray:: ::'); // I CHECK AND SEE CLEARED DATA!
\Log::info($inputDataArray);
$request->replace($inputDataArray); // THAT DOWS NOT WORK ?
return $next($request);
}
}
已修改:
我找到一篇文章
在阅读这篇文章时,我想我必须使用中间件的cleanData,所以我评论了以前使用的方法并添加了
方法:
只是为了检查和替换任何值
但我在日志文件中出错:
[2019-12-24 12:40:48] local.ERROR: Function name must be a string {"userId":1,"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalThrowableError(code: 0): Function name must be a string at /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:164)
[stacktrace]
#0 /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#1 /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/tymon/jwt-auth/src/Http/Middleware/Authenticate.php(32): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#2 /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Tymon\\JWTAuth\\Http\\Middleware\\Authenticate->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#3 /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#4 /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(41): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#5 /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#6 /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#7 /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(58): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
...
而且没有我在\Log::info中写的消息。。。
哪条路是对的
如何正确执行?我在模型中找到了一个决策方法,用于任何需要清除的字段:
public function setNameAttribute($value)
{
$this->attributes['name'] = $this->workTextString($value);
}
没有中间件,它对我有效尝试使用
$request->merge
方法我尝试了$request->merge($inputDataArray);返回$next($request);再次存档-我的数据清除不是AppliedPL,请查看ModifiedWho在中间件中替换了提交的数据,请给出一个提示,您使用了哪种方法?您必须使用更新的数据调用merge。类似这样的内容:$inputdataarraywhithouttags=removeUnwantedTags($inputDataArray)代码>$request->merge($inputDataArrayWithoutTags)代码>返回$next($request)代码>
[2019-12-24 12:40:48] local.ERROR: Function name must be a string {"userId":1,"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalThrowableError(code: 0): Function name must be a string at /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:164)
[stacktrace]
#0 /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#1 /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/tymon/jwt-auth/src/Http/Middleware/Authenticate.php(32): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#2 /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Tymon\\JWTAuth\\Http\\Middleware\\Authenticate->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#3 /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#4 /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(41): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#5 /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#6 /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#7 /mnt/_work_sdb8/wwwroot/lar/CTasksRestAPI/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(58): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
...
public function setNameAttribute($value)
{
$this->attributes['name'] = $this->workTextString($value);
}