簡體   English   中英

如何在Laravel軟件包中定義控制器路徑

[英]How to define controller path in Laravel Package

我想使用Laravel創建一個程序包,並將我的API路由到我的程序包控制器。 沒有他們的文件夾地址。 所以我需要這樣的東西:

Route::prefix('message')->group(function () {
    Route::get('/', 'CustomMessageController@index');
});

我發現這樣的東西:

Route::prefix('message')->group(function () {
    Route::get('/', 'Http/Controllers/CustomMessageController@index');
});

另外,我想在ServiceProvider'boot'方法中自動定義所有控制器,但是我只能找到類似以下內容:

$this->app->make('Devdojo\Calculator\CalculatorController');

謝謝。

一段時間后,我發現了它。 所以我這樣做:

1-將Laravel RouteServiceProvider復制到我的包中

2-重命名為我自己的包名稱

3-刪除一些不可用的方法並最終刪除我的RouteServiceProvider ID

<?php

namespace Alive2212\LaravelMessageService\Providers;

use Illuminate\Support\Facades\Route;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;

class AliveLaravelMessageServiceRouteServiceProvider extends ServiceProvider
{
    protected $namespace = 'Alive2212\LaravelMessageService\Http\Controllers';

    public function boot()
    {
    parent::boot();
    }

    public function map()
    {
    $this->mapApiRoutes();
    }

    protected function mapApiRoutes()
    {
    Route::prefix('alive_api')
         ->namespace($this->namespace)
         ->group(__DIR__.'/../../routes/api.php');
    }
}

4-將其注冊到我的包裹服務提供商中,最后確定我的包裹提供商

public function boot()
{
    $this->app->register(AliveLaravelMessageServiceRouteServiceProvider::class);
}

5-在軟件包的根目錄中,創建“ route”文件夾,並創建api.php並將一些Routes放入其中:

Route::prefix('message')->group(function () {
    Route::get('/', 'CustomMessageController@index');
});

6-在文件夾的``src''文件夾中創建文件夾``Http \\ Controllers''並將Laravel項目中的Controller.php放入其中,並創建另一個控制器,如下所示:

namespace Alive2212\LaravelMessageService\Http\Controllers;

use Alive2212\LaravelMessageService\Http\Controllers\Controller;
use Alive2212\LaravelMessageService\Message;
use Illuminate\Http\Request;

class CustomMessageController extends Controller
{
    protected $model;

    public function __construct()
    {
    $this->model = new Message();
    }

    public function index(Request $request)
    {
        return "the is my package index controller";
    }

}

7-服務項目結束后,“ localhost:8000 / alive_api / message”地址正常工作

您只需要在PackageServiceProvider.php中

    public function register()
    {
        include __DIR__ . '/routes.php';
    }

當然還有routes.php。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM