我最近将Laravel从5.0升级到版本5.1,但每当我向服务器发送API响应时,它都会抛出如下异常:
ReflectionException in RouteDependencyResolverTrait.php line 57: Class App\Http\Requests\User\GetRequest does not exist
升级之前一切正常。
这是 composer.json 文件的autoload
部分:
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/",
"Bloom\\" : "library/Bloom"
}
}
可能是因为我在升级过程中出了问题吗?
这是GetRequest
类的声明方式:
<?php namespace App\Http\Requests\User;
use App\User;
use App\Http\Requests\Request;
use Illuminate\Support\Facades\Auth;
/**
* Class GetRequest
* @package App\Http\Requests\User
*/
class GetRequest extends Request {
更新:我刚刚重新安装了Laravel 5.1并将所有旧文件移至新安装但我仍然收到同样的错误。
更新2 :运行php composer dump-autoload -o
后,我发现文件 vendor / composer / autoload_classmap.php 包含Laravel无法找到的类:
'App\\Http\\Requests\\User\\GetRequest' => $baseDir . '/app/Http/Requests/User/GetRequest.php',
更新3 :我还尝试使用
创建新请求php artisan make:request TestRequest
然后使用UserController.php中的TestRequest
/**
* @param GetRequest $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function get(TestRequest $request)
{
if(!$this->userRepository->getUser()) return $this->respondOK('User not found.');
$user = $this->userRepository->getUser();
return $this->respondOK('', (new UserTransformer())->transform($user->toArray()));
}
但我仍然收到同样的错误。
答案 0 :(得分:2)
好的,我找到了解决方案。
我注意到,如果在GetRequest
班级中我将use App\Http\Requests\Request;
与use Request;
交换,则会找到GetRequest
类,并且不会抛出 ReflectionException 了。
所以问题不在App\Http\Requests\User\GetRequest
类,而在抽象类App\Http\Requests\Request
中。
在查看我做了更改的App\Http\Requests\Request
类之后,我决定用Laravel中的dist版本替换它,然后我重新应用了我的更改。
长话短说:问题发生在App\Http\Requests\Request
,因为我对其进行了更改,并且更新了Laravel 5.1后发生了一些变化。
答案 1 :(得分:1)
我遇到了同样的问题。目前我发现解决方案为&#34;使用&#34;在使用新请求类的控制器中。 设置&#34;使用&#34;在控制器中获取请求文件的正确路径:
use App\Http\Requests\Request;
use App\Http\Requests\YOUR_NEW_REQUEST_CLASSRequest;