我的所有 API 颠覆都需要 Controller.php 吗?
Do I need to have Controller.php in all my API subversion?
我正在尝试在我的 Laravel 项目中创建一个 API 目录,但我收到以下错误...
Class 'App\Http\Controllers\Controller' not found
我曾尝试在我的 API 控制器上使用 use App\Http\Controllers\Controller;
,但没有成功。
我的 API 类 定义为...
class SyncController extends Controller {...}
class TimecardController extends Controller {...}
我很确定错误来自 extends Controller
部分。
在 App\Http\Controllers\Controller
我有 Controller.php
。我克服这个问题的一种方法是将 Controller.php
复制到 App\Http\Controllers\Api\v2\
并更改该控制器的名称空间以匹配它所在的位置 (namespace App\Http\Controllers\Api\v2;
)
我不认为这是正确的,因为应该有一种方法可以从 API 子目录中的控制器引用 Controller.php。
../Controllers/Controller.php
和API是一个子目录,../Controllers/Api/v2/SyncController.php
如有任何帮助,我们将不胜感激。
谢谢
------------编辑------------
我的 api 路线看起来像这样
Route::group(['prefix' => 'api/v2'], function () {
Route::get('sync', 'Api\v2\SyncController@sync')->middleware('auth:api');
Route::post('timecard', 'Api\v2\TimecardController@create')->middleware('auth:api');
});
找不到控制器 class,因为 API 控制器不在默认的 Laravel 控制器目录中。您需要将控制器 class 添加为 use statement。然后自动加载器就能找到它。
namespace App\Http\Controllers\Api\v2;
use App\Http\Controllers\Controller;
class SyncController extends Controller {...}
在您动手的同时,您可能还想将 auth:api
中间件添加到整个组。更安全高效。
Route::group(['prefix' => 'api/v2', 'middleware' => 'auth:api', 'namespace' => 'Api\v2'], function () {
Route::get('sync', 'SyncController@sync');
Route::post('timecard', 'TimecardController@create');
});
我正在尝试在我的 Laravel 项目中创建一个 API 目录,但我收到以下错误...
Class 'App\Http\Controllers\Controller' not found
我曾尝试在我的 API 控制器上使用 use App\Http\Controllers\Controller;
,但没有成功。
我的 API 类 定义为...
class SyncController extends Controller {...}
class TimecardController extends Controller {...}
我很确定错误来自 extends Controller
部分。
在 App\Http\Controllers\Controller
我有 Controller.php
。我克服这个问题的一种方法是将 Controller.php
复制到 App\Http\Controllers\Api\v2\
并更改该控制器的名称空间以匹配它所在的位置 (namespace App\Http\Controllers\Api\v2;
)
我不认为这是正确的,因为应该有一种方法可以从 API 子目录中的控制器引用 Controller.php。
../Controllers/Controller.php
和API是一个子目录,../Controllers/Api/v2/SyncController.php
如有任何帮助,我们将不胜感激。
谢谢
------------编辑------------
我的 api 路线看起来像这样
Route::group(['prefix' => 'api/v2'], function () {
Route::get('sync', 'Api\v2\SyncController@sync')->middleware('auth:api');
Route::post('timecard', 'Api\v2\TimecardController@create')->middleware('auth:api');
});
找不到控制器 class,因为 API 控制器不在默认的 Laravel 控制器目录中。您需要将控制器 class 添加为 use statement。然后自动加载器就能找到它。
namespace App\Http\Controllers\Api\v2;
use App\Http\Controllers\Controller;
class SyncController extends Controller {...}
在您动手的同时,您可能还想将 auth:api
中间件添加到整个组。更安全高效。
Route::group(['prefix' => 'api/v2', 'middleware' => 'auth:api', 'namespace' => 'Api\v2'], function () {
Route::get('sync', 'SyncController@sync');
Route::post('timecard', 'TimecardController@create');
});