Зарегистрировать промежуточное ПО в Laravel очень просто:

просто укажите класс промежуточного программного обеспечения в свойстве $ middleware вашего класса app / Http / Kernel.php

Или

Если вы хотите назначить промежуточное программное обеспечение для определенных маршрутов, вы должны сначала назначить промежуточному программному обеспечению короткий ключ в вашем файле app / Http / Kernel.php.

Но как это можно сделать в плагине OctoberCMS? "Маршрутизация и инициализация" предназначена для использования вместо {{X0 }} для регистрации промежуточного программного обеспечения? Если нет, где плагин может зарегистрировать собственное промежуточное ПО?

4
B Faley 29 Апр 2016 в 22:17

5 ответов

Лучший ответ

Как упоминалось в документации, вы можете расширить класс контроллера внутри метода загрузки. вашего 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');
});
2
Raja Khoury 7 Фев 2017 в 01:12

Вы должны указать класс промежуточного программного обеспечения

$middleware property

Класса Kernel.php.

-2
CollinD 1 Май 2016 в 06:39

Фактически, вы можете добавить промежуточное ПО в обратный вызов своего плагина register, потому что оно зарегистрировано до того, как произойдет промежуточное ПО.

class YourPlugin extends PluginBase
{
   public function register()
   {
    $kernel = app()->make('Illuminate\Contracts\Http\Kernel');
    $kernel->pushMiddleware(YourMiddleWare::class);
   }
}
1
OsDev 11 Янв 2017 в 01:55

Использовать это

Cms\Classes\CmsController::extend(function($controller) {
$controller->middleware('your middleware here');
});
1
mosid 28 Май 2016 в 21:06

Я получил его, используя опцию 'middleware' с полностью определенным именем класса с группой Route в моих плагинах routes.php

Route::group(['middleware' => '\Namespace\ABC123\AuthMiddleware'], function(){
1
Steven Briscoe 19 Май 2016 в 22:57