matched() public method

Register a route matched event listener.
public matched ( string | callable $callback ) : void
$callback string | callable
return void
 /**
  * Define your route model bindings, pattern filters, etc.
  *
  * @param  \Illuminate\Routing\Router  $router
  * @return void
  */
 public function boot(Router $router)
 {
     // Sets up our routing tokens.
     $router->pattern('board', Board::URI_PATTERN);
     $router->pattern('id', '[1-9]\\d*');
     $router->model('ban', '\\App\\Ban');
     $router->model('board', '\\App\\Board');
     $router->model('post', '\\App\\Post');
     $router->model('report', '\\App\\Report');
     $router->model('role', '\\App\\Role');
     $router->bind('user', function ($value, $route) {
         if (is_numeric($value)) {
             return \App\User::find($value);
         } else {
             if (preg_match('/^[a-z0-9]{1,64}\\.(?P<id>\\d+)$/i', $value, $matches)) {
                 return \App\User::find($matches['id']);
             }
         }
     });
     $router->bind('role', function ($value, $route) {
         if (is_numeric($value)) {
             return \App\Role::find($value);
         } else {
             if (preg_match('/^[a-z0-9]{1,64}\\.(?P<id>\\d+)$/i', $value, $matches)) {
                 return \App\Role::find($matches['id']);
             }
         }
     });
     $router->bind('post_id', function ($value, $route) {
         $board = $route->getParameter('board');
         if (is_numeric($value) && $board instanceof Board) {
             return $board->getThreadByBoardId($value);
         }
     });
     // Binds a matched instance of a {board} as a singleton instance.
     $router->matched(function ($route, $request) {
         // Binds the board to the application if it exists.
         $board = $route->getParameter('board');
         if ($board instanceof Board && $board->exists) {
             $board->applicationSingleton = true;
             //$this->app->instance("\App\Board", $board);
             $this->app->singleton("\\App\\Board", function ($app) use($board) {
                 return $board->load(['assets', 'settings']);
             });
         }
         // Binds the post to the application if it exists.
         $post = $route->getParameter('post_id');
         if ($post instanceof Post && $post->exists) {
             $route->setParameter('post', $post);
             //$this->app->instance("\App\Post", $post);
             $this->app->singleton("\\App\\Post", function ($app) use($post) {
                 return $post;
             });
         }
     });
     parent::boot($router);
 }
 /**
  * Handle route decodable params
  *
  * @param \Illuminate\Routing\Router $route
  * @param $configKey
  */
 protected function forRoute($route, $configKey)
 {
     $route->matched(function ($route) use($configKey) {
         /**
          * @var \Illuminate\Routing\Route $route
          */
         foreach ($route->parameters() as $parameterKey => $parameterValue) {
             if (Str::startsWith($parameterKey, $configKey)) {
                 $route->setParameter($parameterKey, BijectiveShortener::decodeToInteger($parameterValue));
             }
         }
     });
 }
 /**
  * Define your route model bindings, pattern filters, etc.
  *
  * @param  \Illuminate\Routing\Router  $router
  * @return void
  */
 public function boot(Router $router)
 {
     // Sets up our routing tokens.
     $router->pattern('board', Board::URI_PATTERN);
     $router->pattern('id', '[1-9]\\d*');
     $router->model('board', 'App\\Board');
     $router->model('post', 'App\\Post');
     $router->model('report', 'App\\Report');
     $router->model('role', 'App\\Role');
     // Binds a matched instance of a {board} as a singleton instance.
     $app = $this->app;
     $router->matched(function ($route, $request) use($app) {
         // Binds the board to the application if it exists.
         $board = $route->getParameter('board');
         if ($board instanceof Board && $board->exists) {
             $board->applicationSingleton = true;
             $app->instance("\\App\\Board", $board);
             $app->singleton("\\App\\Board", function ($app) use($board) {
                 return $board->load('settings');
             });
         }
     });
     parent::boot($router);
 }
Example #4
0
 /**
  * Register a route matched event listener.
  *
  * @param string|callable $callback
  * @return void 
  * @static 
  */
 public static function matched($callback)
 {
     \Illuminate\Routing\Router::matched($callback);
 }
 /**
  * Define your route model bindings, pattern filters, etc.
  *
  * @param  \Illuminate\Routing\Router  $router
  * @return void
  */
 public function boot(Router $router)
 {
     // Sets up our routing tokens.
     $router->pattern('attachment', '[0-9]\\d*');
     $router->pattern('board', Board::URI_PATTERN);
     $router->pattern('id', '[0-9]\\d*');
     $router->model('attachment', '\\App\\FileAttachment');
     $router->model('ban', '\\App\\Ban');
     $router->model('board', '\\App\\Board');
     $router->model('page', '\\App\\Page');
     $router->model('post', '\\App\\Post');
     $router->model('report', '\\App\\Report');
     $router->model('role', '\\App\\Role');
     $router->bind('user', function ($value, $route) {
         if (is_numeric($value)) {
             return User::find($value);
         } else {
             if (preg_match('/^[a-z0-9]{1,64}\\.(?P<id>\\d+)$/i', $value, $matches)) {
                 return User::find($matches['id']);
             }
         }
     });
     $router->bind('page', function ($value, $route) {
         if (is_numeric($value)) {
             return Page::find($value);
         } else {
             if (preg_match('/^[a-z0-9]{1,64}\\.(?P<id>\\d+)$/i', $value, $matches)) {
                 return Page::find($matches['id']);
             }
         }
     });
     $router->bind('page_title', function ($value, $route) {
         $board = $route->getParameter('board');
         return Page::where(['board_uri' => $board instanceof Board ? $board->board_uri : null, 'title' => $value])->first();
     });
     $router->bind('board', function ($value, $route) {
         $board = Board::getBoardForRouter($this->app, $value);
         if ($board) {
             $board->applicationSingleton = true;
             return $board;
         }
         return abort(404);
     });
     $router->bind('attachment', function ($value, $route) {
         return \App\FileAttachment::where('is_deleted', false)->with('storage')->find($value);
     });
     $router->bind('role', function ($value, $route) {
         if (is_numeric($value)) {
             return \App\Role::find($value);
         } else {
             if (preg_match('/^[a-z0-9]{1,64}\\.(?P<id>\\d+)$/i', $value, $matches)) {
                 return \App\Role::find($matches['id']);
             }
         }
     });
     $router->bind('post_id', function ($value, $route) {
         $board = $route->getParameter('board');
         if (!$board instanceof Board) {
             $board = $this->app->make("\\App\\Board");
         }
         if (is_numeric($value) && $board instanceof Board) {
             return $board->getThreadByBoardId($value);
         }
     });
     // Binds a matched instance of a {board} as a singleton instance.
     $router->matched(function ($route, $request) {
         $board = $route->getParameter('board');
         if ($board instanceof Board && $board->exists) {
             // Binds the board to the application if it exists.
             $this->app->singleton("\\App\\Board", function ($app) use($board) {
                 return $board;
             });
         }
         // Binds the post to the application if it exists.
         $post = $route->getParameter('post_id');
         if ($post instanceof Post && $post->exists) {
             $route->setParameter('post', $post);
             //$this->app->instance("\App\Post", $post);
             $this->app->singleton("\\App\\Post", function ($app) use($post) {
                 return $post;
             });
         }
     });
     parent::boot($router);
 }