【发布时间】:2019-06-14 07:48:17
【问题描述】:
几周前我开始使用 Laravel 进行开发。这是一个很棒的框架,尤其是对我而言。
但是在这一点上,我对 Laravel 的功能感到困惑。 (我不太确定,是 PHP 问题还是 Laravel 问题)。
我想为我的 Web 应用程序开发 API。为了保持我的应用程序结构整洁,我将所有 API 控制器与其他控制器分开,因此我为新控制器提供了一个新的命名空间。
当我给控制器命名空间"App\Http\Controllers\API" 时,事情变得很奇怪。它只是给了我一个空白站点,与代码无关。
但是当我从命名空间 ("App\Http\Controllers") 中删除 API 时,控制器会工作并生成正确的输出。
因此,此代码不起作用:
<?php
namespace App\Http\Controllers\API;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Response;
use App\Room;
use App\Http\Resources\Room as RoomResource;
class RoomsController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$room = Room::all();
return Response::json($room);
}
}
这个代码对我有用:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Response;
use App\Room;
use App\Http\Resources\Room as RoomResource;
class RoomsAPIController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$room = Room::all();
return Response::json($room);
}
}
我只是想知道,我做错了什么。第二种方法有效,但它似乎是一个“快速而肮脏”的解决方案。
【问题讨论】:
-
当您将其更改为包含
API时,您是否将其移动到文件系统中?您是否更新了指向新命名空间的路由?
标签: php laravel api controller routing