Php 如何在OctoberCMS插件中注册中间件?

Php 如何在OctoberCMS插件中注册中间件?,php,laravel,laravel-5,octobercms,laravel-middleware,Php,Laravel,Laravel 5,Octobercms,Laravel Middleware,这很容易: 只需在数据库的$middleware属性中列出中间件类 app/Http/Kernel.php类 或 如果您想将中间件分配给特定的路由,您应该 首先为中间件分配一个快捷键 app/Http/Kernel.php文件 但是如何在OctoberCMS插件中实现这一点呢?“”是用来代替Kernel.php注册中间件的吗?如果没有,插件在哪里可以注册自己的中间件?您必须列出中间件类 $middleware property 是Kernel.php类的。我在plugins routes.ph

这很容易:

只需在数据库的$middleware属性中列出中间件类 app/Http/Kernel.php类

如果您想将中间件分配给特定的路由,您应该 首先为中间件分配一个快捷键 app/Http/Kernel.php文件


但是如何在OctoberCMS插件中实现这一点呢?“”是用来代替
Kernel.php
注册中间件的吗?如果没有,插件在哪里可以注册自己的中间件?

您必须列出中间件类

$middleware property

是Kernel.php类的。

我在plugins routes.php中使用了“middleware”选项,该选项具有完全限定的类名和路由组

Route::group(['middleware' => '\Namespace\ABC123\AuthMiddleware'], function(){
用这个

Cms\Classes\CmsController::extend(function($controller) {
$controller->middleware('your middleware here');
});

实际上,您可以在插件
register
回调上推送中间件,因为它是在中间件发生之前注册的

如中所述,您可以在plugin.php的引导方法中扩展控制器类

public function boot()
{

    // Extend Controller Class
    \Cms\Classes\CmsController::extend(function($controller) {
        $controller->middleware('Middleware\Path..');
    });


    // OR Push it directly to the Kernel

      // prependMiddleware : Add a new middleware to beginning of the stack.
     $this->app['Illuminate\Contracts\Http\Kernel']
        ->prependMiddleware('Middleware\Path..');

     // pushMiddleware : Add a new middleware to end of the stack.
     $this->app['Illuminate\Contracts\Http\Kernel']
        ->pushMiddleware('Middleware\Path..');

}
您还可以将其添加到插件的
routes.php
文件中:

Route::group(['prefix' => 'foo'], function () {

        Route::get('{slug}', function($slug){

           ....

        })->where('slug', '(.*)?')->middleware('Path\To\Middleware');
});
Route::group(['prefix' => 'foo'], function () {

        Route::get('{slug}', function($slug){

           ....

        })->where('slug', '(.*)?')->middleware('Path\To\Middleware');
});