【问题标题】:FormRequest all() method causes Reflection exception in Laravel 5.5FormRequest all() 方法导致 Laravel 5.5 中的反射异常
【发布时间】:2017-11-18 10:02:05
【问题描述】:

laravel 5.5 的问题

如果我在formRequest类中使用all()方法,它会抛出反射异常

ReflectionException
Class App\Http\Requests\CashDepositRequest does not exist

但是当我删除all() 方法时,它运行良好。

这在 laravel 5.4 中不是问题

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class CashDepositRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }
    public function rules()
    {
        return [
            'amount' => 'bail|required|numeric',
            'gateway' => 'bail|required|exists:gateways,id',
        ];
    }
    //This method causes reflection exception
    public function all()
    {
        $this->attributes = parent::all();
        $this->attributes['amount'] = $this->attributes['amount'];
        return $this->attributes;
    }
}

在 laravel 5.5 的 formRequest 类中有没有其他方法可以修改用户输入?

【问题讨论】:

    标签: php laravel laravel-5 laravel-5.4 laravel-5.5


    【解决方案1】:

    首先all() 不是属性而是类方法。

    第二件事是这个方法的签名。父类中的签名如下所示:

    public function all($keys = null)
    

    所以你应该在子类中更新它。

    如果您从upgrade guide 中的先前版本升级,您可以阅读:

    如果您要覆盖 Illuminate\Http\Request 类的 all 方法,则应更新方法签名以反映新的 $keys 参数:

    这可能是导致您的问题的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-15
      • 2015-11-08
      • 1970-01-01
      • 1970-01-01
      • 2017-06-18
      • 2018-04-15
      • 1970-01-01
      • 2017-03-24
      相关资源
      最近更新 更多