Php 在路由中找不到Laravel程序包控制器

Php 在路由中找不到Laravel程序包控制器,php,laravel,Php,Laravel,我有一个控制器,我想使用控制器。当我尝试在路线上使用它时 Class App\Http\Controllers\Tropicalista\Admin\Controllers\DashboardController does not exist 我在我的/routes/web.php中有这个 Route::group([ 'namespace' => '\Tropicalista\Admin\Controllers', 'prefix'=> 'admin'], f

我有一个控制器,我想使用控制器。当我尝试在路线上使用它时

Class App\Http\Controllers\Tropicalista\Admin\Controllers\DashboardController 
does not exist
我在我的/routes/web.php中有这个

Route::group([
    'namespace' => '\Tropicalista\Admin\Controllers', 
    'prefix'=> 'admin'], function() {

        Route::get('/', ['as' => 'admin.root', 'uses' => 'DashboardController@index']);

});
我的控制器:

namespace Tropicalista\Admin\Controllers;

use Illuminate\Http\Request;
use Analytics;
use Carbon\Carbon;
use Spatie\Analytics\Period;
use Illuminate\Support\Collection;
use Illuminate\Routing\Controller;

class DashboardController extends Controller
{...}
我认为这是一个名称空间问题。那么我如何调用包控制器呢

默认情况下,
RouteServiceProvider
将您的路由文件包含在 一个
名称空间
组,允许您注册控制器路由而无需 指定完整的
App\Http\Controllers
命名空间前缀。那么,你呢
需要指定
位于
基本
App\Http\Controllers
命名空间

您需要删除


因为它是一个包,所以您需要将它放在包中

您可以看到注册包控制器的示例:


要调用包控制器,请将RouteServiceProvider的命名空间组从更改为

protected $namespace = 'App\Http\Controllers';
设置为null/空,即

protected $namespace = '';
然后,路线可以写为

Route::get('homepage', 'Package\Namespace\Controllers\ControllerName@ActionName');
此外,如果要为默认控制器写入路由,请在启动url之前使用前导斜杠“/”

Route::get('/homepage', 'App\Http\Controllers\ControllerName@ActionName');

这是否是一个好的做法,但它解决了问题。

您的路线url是什么??向我们展示一些可以帮助我们理解的内容。您可能缺少命名空间中的前导\项。张贴您的代码。请显示您的路由url和控制器名称空间我应该放置
使用照明\路由\控制器在控制器中?您指的是哪个控制器??你的包控制器还是你自己的控制器?包控制器我认为我们不应该更改包控制器中的任何内容,因为它是某种库,对吗?包是我的,我正在为我的目的开发它。我只是在学习什么是最佳实践。
Route::get('homepage', 'Package\Namespace\Controllers\ControllerName@ActionName');
Route::get('/homepage', 'App\Http\Controllers\ControllerName@ActionName');