簡體   English   中英

從 5.4 升級后,Laravel 5.5 拋出 ReflectionException CustomRequest 類不存在

[英]Laravel 5.5 throws ReflectionException CustomRequest Class doen't exist after upgrade from 5.4

我最近將 Laravel 從 5.4 升級到了 5.5 版,但是每當我在更新或存儲一些使用自定義請求的信息(例如書帖(BooksRequest))時向服務器發送 API 響應時,它都會拋出如下異常:

ReflectionException
Class App\Http\Requests\Admin\BooksRequest does not exist

/home/gingern/Web/www/asiacrochet/vendor/laravel/framework/src/Illuminate/Routing/RouteSignatureParameters.php:25

在文件的那部分:

public static function fromAction(array $action, $subClass = null)
    {
        $parameters = is_string($action['uses'])
                        ? static::fromClassMethodString($action['uses'])
                        : (new ReflectionFunction($action['uses']))->getParameters();

        return is_null($subClass) ? $parameters : array_filter($parameters, function ($p) use ($subClass) {
            return $p->getClass() && $p->getClass()->isSubclassOf($subClass);
        });
    }

升級前一切正常。

我試過了

composer dump-autoload -o

在 vendor/composer/autoload_classmap.php 中沒有這樣的類。 更新:我不知道如何,但現在這個文件中有需要的類,例如:

'App\\Http\\Requests\\Admin\\BooksRequest' => $baseDir . '/app/Http/Requests/Admin/BooksRequest.php',

我的 BooksRequest 類的一部分:

<?php

namespace App\Http\Requests\Admin;

use Illuminate\Foundation\Http\FormRequest;

use Illuminate\Validation\Factory as ValidationFactory;

use Carbon\Carbon;
use Purifier;
use App\Book;
use App\Traits\RequestsExtraFunctions;

class BooksRequest extends FormRequest
{
    use RequestsExtraFunctions;

    public function __construct(ValidationFactory $validationFactory)
    {
        $this->setExtraImagesRules($validationFactory, 'App\Book');
    }

    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        $id = (int)$this->route('book');

        $rules = [
            //some rules
        ];
        //some additional rules
        return $rules;
    }

    public function all()
    {
        $input = parent::all();
        //some manipulations on input
        return $input;
    }
}

使用 BooksRequest 的控制器:

<?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

use Illuminate\Support\Facades\Auth;
use Validator;

use App\Http\Requests\Admin\BooksRequest;
use App\Book;

class BooksController extends Controller
{
    public function store(BooksRequest $request)
    {
        $input = $request->all();  
    //some manipulations
        return redirect()->route('admin.books.index');     
    }

    public function update(BooksRequest $request, $id)
    {
        $book = Book::find($id);
    //some manipulations
        return redirect()->route('admin.books.edit', $book->id)->with('status', trans('status.edit_success'));
    }
}

另外我的問題看起來與這個問題相似,但不完全是,答案也沒有幫助https://laracasts.com/discuss/channels/laravel/laravel-51-throws-reflectionexception-after-upgrade-from-50?page= 1

composer dump-autoload

我遇到了同樣的問題,這很好用

從 5.4 升級到 5.5 后,我遇到了同樣的錯誤。 我確定這是因為自定義請求類中的 all() 方法。

Laravel 5.5 升級指南

所以我試過這個只是為了測試目的:

public function all()
{
    dd('test');
}

也沒有工作,得到一個我的自定義請求不存在的 ReflectionException。 所以我只是完全刪除了 all() 方法,它出於某種原因起作用了,嗯...

這可以通過更改來解決:

public function all()
{
    dd('test');
}

到:

public function all($keys = null)
{
    dd('test');
}

簽名在升級過程中更改為 5.5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM