【问题标题】:Laravel TransformRequest not applying to own Request classesLaravel TransformRequest 不适用于自己的 Request 类
【发布时间】:2017-02-04 06:22:18
【问题描述】:

此问题已在 Laravel 5.4.9 中修复。

这两个新的中间件类不适用于我自己的请求。 两个新的中间件是:

\App\Http\Middleware\TrimStrings::class
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class

但是,他们不会将更改应用于我自己的请求。例如:我有这个要求:

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;

class CreateStoreRequest extends FormRequest
{
    public function authorize()
    {
        return Auth::check();
    }

    public function rules()
    {
        var_dump( $this->all() ); // Content not handled by middleware

        return [
            // Rules
        ];
    }
}

当我使用 var_dump 时,我可以看到内容没有改变。

如果我在我的控制器中使用Illuminate\Http\Request,它就可以工作。

有什么方法可以在我自己的请求类中实现这些更改?

【问题讨论】:

  • 当您在方法中使用 CreateStoreRequest 时,尝试 dd($request->all()) 并分享结果,它应该可以正常工作
  • 返回未处理的内容。我还调试了这些功能,它们正在运行。如果我使用助手请求('field'),它会返回处理的内容。问题是我想在自己的请求类中使用已处理的内容进行验证。
  • 手动修剪和转换(使用 trim() 和 terany 运算符转换)我认为这些中间件在请求后工作
  • 他们没有。它们在 Illuminate\Http\Request 中工作,但不适用于我自己的请求。这绝对不是故意的。
  • 同样的问题,找不到将 TrimStrings 和 ConvertEmptyStringsToNull 应用到我的 FormRequest 的方法。

标签: laravel laravel-5 laravel-request laravel-5.4


【解决方案1】:

我在 Github 代表中找到了解决方案。

将以下内容添加到您的请求类中。

public function all()
{
    $this->merge( $this->request->all() );

    return parent::all();
}

如果您要检查规则中的类型,您可能需要在规则中添加“可为空”。

【讨论】:

  • 像魅力一样工作!
  • 大约 20 分钟前在 v5.4.9 上修复!
猜你喜欢
  • 2018-04-22
  • 2016-01-29
  • 2018-06-07
  • 2020-04-23
  • 1970-01-01
  • 1970-01-01
  • 2012-06-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多