我想用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');
感谢。
答案 0 :(得分:1)
过了一会儿我发现了。 所以我这样做:
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-在包的根目录中创建&#39; route&#39;文件夹并创建api.php并将一些路由放入其中:
Route::prefix('message')->group(function () {
Route::get('/', 'CustomMessageController@index');
});
6-创建文件夹&#39; Http \ Controllers&#39;进入&#39; src&#39;包的文件夹,并从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-服务项目后,&#34; localhost:8000 / alive_api / message&#34;地址工作正常
答案 1 :(得分:1)
您只需要在PackageServiceProvider.php
中 public function register()
{
include __DIR__ . '/routes.php';
}
当然还有routes.php。