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 UserControllerapp/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.phpapi.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' =&gt; 'API\UserController']);

以上是关于Laravel:“$ php artisan route:list”在 App\Http\Controllers\API 中不显示路由列表的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:laravel 可翻译插件

win 怎么laravel命令

laravel 安装失败

laravel validator怎么验证整数

Laravel 图像规则验证不适用于 Laravel 8,但适用于 Laravel 7 |拉拉维尔 |图片 |验证

laravel和mongo怎么搭配使用