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');