FormRequest all()方法在Laravel 5.5中导致Reflection异常

时间:2017-11-17 17:09:36

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

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类的用户输入?

1 个答案:

答案 0 :(得分:1)

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

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

public function all($keys = null)

所以你应该在子类中将它更新为相同的。

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

  

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

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