使用Laravel 5.6.39,我安装了一个名为Mercurius Messenger的软件包

该软件包通过composer安装了所有资产,因此我可以在/vendor/launcher/查看它们

在他们的仓库中,他们有一个路由文件。

Route::group([
    'as'         => 'mercurius.',
    'namespace'  => '\Launcher\Mercurius\Http\Controllers',
    'middleware' => [
        // 'Mercurius',
        'web',
        'auth',
    ],
], function () {
    // Mercurius home
    Route::get('/messages', ['as' => 'home', 'uses' => 'MessagesController@index']);
    // User Profile
    Route::get('/profile/refresh', 'ProfileController@refresh');
    Route::get('/profile/notifications', 'ProfileController@notifications');
});

控制器的名称空间已在上面添加:

\Launcher\Mercurius\Http\Controllers

当我尝试打以下路线之一时,出现此错误:

"Class App\Http\Controllers\Launcher\Mercurius\Http\Controllers\MessagesController does not exist"

显然是将命名空间添加到App \\ Http \\ Controllers的当前名称空间中,是否可以解决此问题? 还是我必须将所有相关文件复制到我的项目中,并弄清楚它们应该去哪里?

#1楼 票数:1 已采纳

您绝对不需要(或不想)将供应商文件复制到您的项目中。

最简单的选择可能是从路由组中删除namespace属性,并在定义路由时使用完整的名称空间。

Route::get('/messages', ['as' => 'home', 'uses' => '\Launcher\Mercurius\Http\Controllers\MessagesController@index']);
Route::get('/profile/refresh', '\Launcher\Mercurius\Http\Controllers\ProfileController@refresh');
Route::get('/profile/notifications', '\Launcher\Mercurius\Http\Controllers\ProfileController@notifications');

或者,你可以创建一个新的路线文件(例如,mercurius.php),并且在RouteServiceProvider.php与正确的名称空间映射。

public function map()
{
    // ... existing route groups

    $this->mapMercuriusRoutes();
}

protected function mapMercuriusRoutes()
{
    Route::middleware(['web','auth','Mercurius'])
         ->namespace('\Launcher\Mercurius\Http\Controllers')
         ->group(base_path('routes/mercurius.php'));
}

  ask by FabricioG translate from so

未解决问题?本站智能推荐:

2回复

如何在Laravel软件包中定义控制器路径

我想使用Laravel创建一个程序包,并将我的API路由到我的程序包控制器。 没有他们的文件夹地址。 所以我需要这样的东西: 我发现这样的东西: 另外,我想在ServiceProvider'boot'方法中自动定义所有控制器,但是我只能找到类似以下内容: 谢谢。
2回复

将控制器添加到 Laravel 5 包

最近,我一直只为我的 L5 包创建模型,但现在我也想尝试引入一个控制器。 我一直在关注这个,但我总是收到错误"Class StatController does not exist" 。 文件夹结构 状态控制器.php 服务提供者 路由文件 有没有人有将控制器分配给 L5 包的替代
1回复

在 Laravel 控制器中导入 Laravel 喜欢的包控制器

我正在尝试在我的基本 Laravel 控制器中扩展包控制器。 尝试使用以下代码导入类,该代码显示错误为未找到类。 <?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App
1回复

Laravel在控制器中找不到IoC绑定

我有一个自定义类App/Http/Responder ,该类具有一些方法可以在应用程序中构建特定的JSON响应。 我想单独测试我的控制器,所以我试图通过构造函数注入我的依赖项。 我的计划是简单地创建一个服务提供者,将其绑定到$app ,然后按照文档将其自动解决: 然后,将其添加到
1回复

无法识别新的 Laravel 包

我正在编写我的第一个 laravel 包,所以我可以使用它并了解包的工作原理并学习如何编写包等。 但是我的项目无法识别我编写的包。 这是我的包 Github 链接: https : //github.com/IIIphr/Shamsi_Calendar 这是我的主要项目: https : //git
1回复

在Laravel中正确使用资源控制器

我使用Laravel资源控制器,但不确定是否使用正确的方法。 我从创建函数中的简单视图返回开始。 在此视图中,我将一个名称写入文本字段,然后单击运行功能索引的提交按钮。 Defaul索引函数只是index(),由于发布请求,我将其更改为index(Request $ request)。
2回复

新的控制器错误Laravel

我在学习Laravel 5的过程中进行了测试,创建了一个新的控制器,但是当它应该可以正常工作时,我确实收到了一个奇怪的错误。 这里是: 我在app / Http / Controllers /目录中创建了一个新文件夹Pages ,并将控制器ContactController添加到其中:
1回复

新的控制器创建Laravel

因此,在学习Laravel 5时,我遇到了以下问题。 我在文件夹中创建了一个名为ContactController的新控制器: 应用程序/ HTTP /控制器/页/ ContactController.php 并且其中包含以下代码: 并且我还将以下代码添加到了我的网络路由中