【问题标题】:In laravel 5.5 middleware modifications are not saved to database在 laravel 5.5 中间件修改不保存到数据库
【发布时间】:2017-12-01 13:36:15
【问题描述】:

在 laravel 5.5 中,我想在提交表单时计算出我的字符串值。

为此,我创建了中间件 app/Http/Middleware/WorkTextString.php :

<?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)
    {
        $request->name = $this->workTextString($request->name); // Fields I want to modify
        $request->description = $this->workTextString($request->description);

        return $next($request);
    }

    protected function workTextString($str) // my workout for any string
    { // some string routing, like trimming more 2 spaces inside of string
    ...

在 app/Http/Kernel.php 我添加了我的中间件:

protected $routeMiddleware = [
    'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
    'can' => \Illuminate\Auth\Middleware\Authorize::class,
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    'WorkTextString'=>\App\Http\Middleware\WorkTextString::class,
];

在路由/api.php 中:

Route::group([  'prefix' => '/v1', 'namespace' => 'Api\V1', 'as' => 'api.'], function () {

    Route::resource('user_task_types', 'UserTaskTypesController', ['except' => ['create', 'edit']])->middleware('WorkTextString');

我看到我的中间件被触发,但修改没有保存到数据库。 哪个是正确的方法?

谢谢!

【问题讨论】:

  • 请编辑标题,不清楚您的要求。同时显示您的workTextString() 定义。

标签: php laravel middleware


【解决方案1】:

我猜你想更新请求中的数据。您可以尝试合并新数据:

$request->merge([
    'name' => $this->workTextString($request->name),
    'description' => $this->workTextString($request->description),
]);

或者

$request['name'] = $this->workTextString($request->name);
$request['description'] = $this->workTextString($request->description);

Request 没有__set 方法,因此在尝试设置属性$request-&gt;name = ... 时,您实际上并没有在实际用作输入源的内容上设置任何变量;

虽然仍然不确定你的代码的哪一部分与数据库有关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-01
    • 2021-03-04
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    • 2018-01-08
    • 1970-01-01
    相关资源
    最近更新 更多