[英]How to publish package controller and views of laravel package?
[英]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.