Я хочу создать пакет с Laravel и маршрутизировать свои API на контроллеры пакетов. Без их адрес папки.
Поэтому мне нужно что-то вроде этого:
Route::prefix('message')->group(function () {
Route::get('/', 'CustomMessageController@index');
});
И я нашел что-то вроде этого:
Route::prefix('message')->group(function () {
Route::get('/', 'Http/Controllers/CustomMessageController@index');
});
Кроме того, я хочу определить все контроллеры автоматически в методе «загрузки» ServiceProvider, но я могу найти что-то вроде этого:
$this->app->make('Devdojo\Calculator\CalculatorController');
Благодарю.
Через некоторое время я нашел это.
Итак, я делаю это:
1- Скопируйте Laravel RouteServiceProvider в мой пакет
2- переименуйте его в мое собственное имя пакета
3 — удалите какой-нибудь непригодный метод и, наконец, мой идентификатор RouteServiceProvider следующий
<?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 и поместите в него несколько маршрутов:
Route::prefix('message')->group(function () {
Route::get('/', 'CustomMessageController@index');
});
6- Создайте папку ‘Http \ Controllers’ в папке ‘src’ пакета и поместите Controller.php из проекта Laravel и создайте в нем еще один контроллер, примерно так:
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';
}
И маршруты .php конечно.