【发布时间】:2018-01-12 02:10:52
【问题描述】:
我有一个小的 crud 前端来存储信息。前端控制器称为ShowsController。我想从 api 获取所有节目。
所以我的routes/web.php 包含:
Route::resource('shows', 'ShowsController');
这很完美,而且效果很好。
我的routes/api.php 包含:
Route::resource('shows', 'ShowsController', ['only' => ['index']]);
/api/shows 的路线应该给我以 json 格式的节目。
为了决定前端和 api,我将 ShowsController 放入 Controllers/Api folder
Controllers/Api/ShowsController 包含:
namespace App\Http\Controllers\Api;
use Illuminate\Http\Request;
use App\Show;
class ShowsController extends Controller
{
public function index(){
return response()
->json(Show::all())->withHeaders([
'Content-Type' => 'text/json',
'Access-Control-Allow-Origin' => '*'
]);
}
}
我还将RouteServiceProvider 更改为:
protected function mapApiRoutes()
{
Route::group([
'middleware' => 'api',
'namespace' => 'Api',
'prefix' => 'api',
], function ($router) {
require base_path('routes/api.php');
});
}
但是php artisan route:list这个命令给了我一个例外:
[反射异常]
类 Api\ShowsController 不存在
为什么 laravel 在 api 目录下找不到定义好的 ShowsController?
【问题讨论】:
-
你试过了吗:composer dump-autoload?
-
@LorenzoBerti 是的,我以前做过。