Dingo\Api\Routing\Router::addRoute PHP Method

addRoute() public method

Add a route to the routing adapter.
public addRoute ( string | array $methods, string $uri, string | array | callable $action ) : mixed
$methods string | array
$uri string
$action string | array | callable
return mixed
    public function addRoute($methods, $uri, $action)
    {
        if (is_string($action)) {
            $action = ['uses' => $action, 'controller' => $action];
        } elseif ($action instanceof Closure) {
            $action = [$action];
        }
        $action = $this->mergeLastGroupAttributes($action);
        $action = $this->addControllerMiddlewareToRouteAction($action);
        $uri = $uri === '/' ? $uri : '/' . trim($uri, '/');
        if (!empty($action['prefix'])) {
            $uri = '/' . ltrim(rtrim(trim($action['prefix'], '/') . '/' . trim($uri, '/'), '/'), '/');
            unset($action['prefix']);
        }
        $action['uri'] = $uri;
        return $this->adapter->addRoute((array) $methods, $action['version'], $uri, $action);
    }

Usage Example

コード例 #1
0
 /**
  * Merge routes defined by packages into API router.
  *
  * @param  \Dingo\Api\Routing\Router  $api
  * @param  \Illuminate\Routing\Router  $router
  * @return void
  */
 protected function mergePackgeRoutes(ApiRouter &$api, Router $router)
 {
     foreach ($router->getRoutes() as $route) {
         $api->version(array_keys($api->getRoutes()), function ($api) use($route) {
             $action = $route->getAction();
             // Remove prefix if present
             if (isset($action['prefix'])) {
                 unset($action['prefix']);
             }
             $api->addRoute($route->getMethods(), $route->uri(), $action);
         });
     }
 }