Laravel:“$ php artisan route:list”在 App\Http\Controllers\API 中不显示路由列表
Posted
技术标签:
【中文标题】Laravel:“$ php artisan route:list”在 App\\Http\\Controllers\\API 中不显示路由列表【英文标题】:Laravel: "$ php artisan route:list" does not show route list in App\Http\Controllers\APILaravel:“$ php artisan route:list”在 App\Http\Controllers\API 中不显示路由列表 【发布时间】:2020-06-13 03:36:44 【问题描述】:我在里面创建了一个UserController
app/Http/Controllers/API/UserController.php
在 UserController.php 里面我有这个namespace App\Http\Controllers\API;
在 api.php 里面我有这个Route::apiResources(['user' => 'API\UserController']);
当我尝试显示路线列表时,出现以下错误。
错误:目标类 [App\Http\Controllers\UserController] 没有 存在。
我们如何告诉 Laravel UserController
在 app/Http/Controllers/API?
内部
【问题讨论】:
Route::apiResources
究竟会做什么?
"您可以通过将数组传递给apiResources
方法来一次注册多个API 资源控制器:"参考:link
感谢大家的回复。我很感激。事实证明,我在 web.php Route::get('/users', 'UserController@index')->name('user');
中创建了另一条路线导致错误。在我删除那行之后,route:list 终于显示出来了。
【参考方案1】:
你需要定义命名空间,这样laravel才能找到控制器:
<?php
namespace App\Http\Controllers\API;
...
class UserController extends Controller
你已经定义了命名空间API
的api.php:
Route::apiResources(['user' => 'API\UserController']);
尝试清除路由缓存:
php artisan route:clear
php artisan optimize
【讨论】:
感谢您花时间回答。我在哪里定义命名空间? 在你的 UserController.php 中 我查了一下,Laravel 已经自动把命名空间放在那里了。我看到了这个namespace App\Http\Controllers\API;
@NoOne Laravel 已经放了App\Http\Controllers
而没有API
,所以会出现错误。确保命名空间中有API
。
谢谢你。这很有帮助。【参考方案2】:
您是否检查过您指定的路径是否正确?
您还可以检查 UserController 中的命名空间,对应于:
namespace App\Http\Controllers\API
?
或者您也可以简单地在 wep / api 路由中添加控制器:
Route::get('prefix', 'DirOfYourController\YourController@SomeFunction);
或者如文档中所述,您可以在此处查看:
https://laravel.com/docs/master/routing#route-group-namespaces
【讨论】:
【参考方案3】:这绝对是因为您的 web.php
或 api.php
文件之一
确保文件的命名空间在其中是正确的,例如Route::get('foo', 'API\UserController');
【讨论】:
【参考方案4】:您只需执行 2 个步骤即可达到相同的效果:
第一步:
在UserController
中定义正确的名称空间,如下所示
namespace App\Http\Controllers\API;
第2步:在web.php
中使用目录名称定义路由,例如。
Route::get('dashboard', 'API\UserController@dashboard');
【讨论】:
感谢您的回复。在 UserController 我有这个namespace App\Http\Controllers\API;
然后在 api.php 我有这个 Route::apiResources(['user' => 'API\UserController']);
以上是关于Laravel:“$ php artisan route:list”在 App\Http\Controllers\API 中不显示路由列表的主要内容,如果未能解决你的问题,请参考以下文章