Laravel 路由中的包控制器别名
Laravel package controller alias in routes
我正在尝试在 Laravel 5.2 中使用路由创建包。我在 Http/Controllers
文件夹中有控制器(带有命名空间 vendor\package\Http\Controllers\MyController
)。我想创建别名,但我不知道如何创建。我不想在 routes.php
中这样调用这个控制器:
Route::get('myurl', vendor\package\Http\Controllers\MyController::class . '@action');
但像那样:
Route::get('myurl', 'MyController@action');
我试图在 Application
class API 中搜索此信息,但找不到此信息。
包提供程序中的代码不起作用。
$this->app
->alias(vendor\package\Http\Controllers\MyController::class, 'MyController');
我的服务提供商:
class PackageRouterServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
//
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
include(__DIR__ . '/../Http/routes.php');
$this->app->alias(MyController::class, 'MyController'); // <- I tried this
}
}
尝试像这样更新您的 PackageRouterServiceProvider.php
:
class PackageRouterServiceProvider extends ServiceProvider
{
// Set this namespace to your package controllers namespace.
protected $namespace = 'vendor\package\Http\Controllers';
public function boot(Router $router)
{
//
}
public function register()
{
$this->mapRoutes($this->app->router);
}
protected function mapRoutes(Router $router)
{
$router->group(['namespace' => $this->namespace], function($router) {
require (__DIR__ . '/../Http/routes.php');
});
}
}
当然,您需要在 Laravel 配置 app.php
文件中注册此提供程序才能正常工作。
我正在尝试在 Laravel 5.2 中使用路由创建包。我在 Http/Controllers
文件夹中有控制器(带有命名空间 vendor\package\Http\Controllers\MyController
)。我想创建别名,但我不知道如何创建。我不想在 routes.php
中这样调用这个控制器:
Route::get('myurl', vendor\package\Http\Controllers\MyController::class . '@action');
但像那样:
Route::get('myurl', 'MyController@action');
我试图在 Application
class API 中搜索此信息,但找不到此信息。
包提供程序中的代码不起作用。
$this->app
->alias(vendor\package\Http\Controllers\MyController::class, 'MyController');
我的服务提供商:
class PackageRouterServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
//
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
include(__DIR__ . '/../Http/routes.php');
$this->app->alias(MyController::class, 'MyController'); // <- I tried this
}
}
尝试像这样更新您的 PackageRouterServiceProvider.php
:
class PackageRouterServiceProvider extends ServiceProvider
{
// Set this namespace to your package controllers namespace.
protected $namespace = 'vendor\package\Http\Controllers';
public function boot(Router $router)
{
//
}
public function register()
{
$this->mapRoutes($this->app->router);
}
protected function mapRoutes(Router $router)
{
$router->group(['namespace' => $this->namespace], function($router) {
require (__DIR__ . '/../Http/routes.php');
});
}
}
当然,您需要在 Laravel 配置 app.php
文件中注册此提供程序才能正常工作。