Создание урла с middleware в Laravel

Опубликовано 2016.10.05

Создаёте контроллер, например CronController (в консоли php artisan make:controller CronController):
  1. namespace App\Http\Controllers;
  2.  
  3. use Illuminate\Http\Request;
  4.  
  5. use App\Http\Requests;
  6. use Illuminate\Support\Facades\DB;
  7.  
  8. class CronController extends Controller
  9. {
  10.  
  11. public function myCallback() {
  12. echo __FUNCTION__;
  13. }
  14. }
Затем создаёте middleware, например с именем LocalhostOnly (в консоли php artisan make:middleware LocalhostOnly)
  1. namespace App\Http\Middleware;
  2.  
  3. use Closure;
  4.  
  5. class LocalhostOnly
  6. {
  7. /**
  8.   * Handle an incoming request.
  9.   *
  10.   * @param \Illuminate\Http\Request $request
  11.   * @param \Closure $next
  12.   * @return mixed
  13.   */
  14. public function handle($request, Closure $next)
  15. {
  16. echo 'Middleware works!';
  17. return $next($request);
  18. }
  19. }
Далее в app/Http/Kernel.php в массив $routeMiddleware дописывате 'localhostonly' => \App\Http\Middleware\LocalhostOnly::class
  1. protected $routeMiddleware = [
  2. 'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
  3. 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
  4. 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
  5. 'can' => \Illuminate\Auth\Middleware\Authorize::class,
  6. 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
  7. 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
  8. 'localhostonly' => \App\Http\Middleware\LocalhostOnly::class,
  9. ];
Теперь у вас есть Middleware с именем localhostonly И наконец можно добавить урл, я добавил в web.php
  1. Route::get('/my-page', 'CronController@myCallback')->middleware('localhostonly');
Если вы всё сделали верно - то по адресу /my-page вы должны увидеть Middleware works!myCallback - то есть запрос прошел через middleware и дошел до нужного метода контроллера.