2017-01-25 126 views
2

我試圖讓REST API與野狗爲laravel 5.3。我有我的項目設置野狗,創造這樣一個API路線測試。調用未定義的方法照亮路徑路徑:: getUri()

$api->version('v1', function ($api) { 
    $api->get('hello',function(){ 

     return "hello"; 
    }); 

}); 

但是當我運行http://localhost:8000/api/hello

然後

{ 
message: "Call to undefined method Illuminate\Routing\Route::getUri()", 
code: 1, 
status_code: 500, 
debug: { 
line: 98, 
file: "C:\xampp\htdocs\apiTest\vendor\dingo\api\src\Routing\Adapter\Laravel.php", 
class: "Symfony\Component\Debug\Exception\FatalErrorException", 
trace: [ 
"#0 {main}" 
] 
} 
} 

被示出。

我已經搜索並找到這一解決方案 Call to undefined method Illuminate\Routing\Route::get()

但是當我用

use Illuminate\Support\Facades\Route; 

那麼這個問題出

FatalErrorException in Laravel.php line 116: 
Call to undefined method Illuminate\Support\Facades\Route::where() 

這是Laravel.php文件

<?php 

namespace Dingo\Api\Routing\Adapter; 

use Illuminate\Http\Request; 
use Illuminate\Routing\Route; 
use Illuminate\Routing\Router; 
use Illuminate\Routing\RouteCollection; 
use Dingo\Api\Contract\Routing\Adapter; 
use Dingo\Api\Exception\UnknownVersionException; 

class Laravel implements Adapter 
{ 
    /** 
    * Laravel router instance. 
    * 
    * @var \Illuminate\Routing\Router 
    */ 
    protected $router; 

    /** 
    * Array of registered routes. 
    * 
    * @var array 
    */ 
    protected $routes = []; 

    /** 
    * Old routes already defined on the router. 
    * 
    * @var \Illuminate\Routing\RouteCollection 
    */ 
    protected $oldRoutes; 

    /** 
    * Create a new laravel routing adapter instance. 
    * 
    * @param \Illuminate\Routing\Router $router 
    * 
    * @return void 
    */ 
    public function __construct(Router $router) 
    { 
     $this->router = $router; 
    } 

    /** 
    * Dispatch a request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param string     $version 
    * 
    * @return mixed 
    */ 
    public function dispatch(Request $request, $version) 
    { 
     if (! isset($this->routes[$version])) { 
      throw new UnknownVersionException; 
     } 

     $routes = $this->mergeExistingRoutes($this->routes[$version]); 

     $this->router->setRoutes($routes); 

     return $this->router->dispatch($request); 
    } 

    /** 
    * Merge the existing routes with the new routes. 
    * 
    * @param \Illuminate\Routing\RouteCollection $routes 
    * 
    * @return \Illuminate\Routing\RouteCollection 
    */ 
    protected function mergeExistingRoutes(RouteCollection $routes) 
    { 
     if (! isset($this->oldRoutes)) { 
      $this->oldRoutes = $this->router->getRoutes(); 
     } 

     foreach ($this->oldRoutes as $route) { 
      $routes->add($route); 
     } 

     return $routes; 
    } 

    /** 
    * Get the URI, methods, and action from the route. 
    * 
    * @param mixed     $route 
    * @param \Illuminate\Http\Request $request 
    * 
    * @return array 
    */ 
    public function getRouteProperties($route, Request $request) 
    { 
     return [$route->getUri(), $route->getMethods(), $route->getAction()]; 
    } 

    /** 
    * Add a route to the appropriate route collection. 
    * 
    * @param array $methods 
    * @param array $versions 
    * @param string $uri 
    * @param mixed $action 
    * 
    * @return \Illuminate\Routing\Route 
    */ 
    public function addRoute(array $methods, array $versions, $uri, $action) 
    { 
     $this->createRouteCollections($versions); 

     $route = new Route($methods, $uri, $action); 
     $route->where($action['where']); 

     foreach ($versions as $version) { 
      $this->routes[$version]->add($route); 
     } 

     return $route; 
    } 

    /** 
    * Create the route collections for the versions. 
    * 
    * @param array $versions 
    * 
    * @return void 
    */ 
    protected function createRouteCollections(array $versions) 
    { 
     foreach ($versions as $version) { 
      if (! isset($this->routes[$version])) { 
       $this->routes[$version] = new RouteCollection; 
      } 
     } 
    } 

    /** 
    * Get all routes or only for a specific version. 
    * 
    * @param string $version 
    * 
    * @return mixed 
    */ 
    public function getRoutes($version = null) 
    { 
     if (! is_null($version)) { 
      return $this->routes[$version]; 
     } 

     return $this->routes; 
    } 

    public function getIterableRoutes($version = null) 
    { 
     return $this->getRoutes($version); 
    } 

    /** 
    * Set the routes on the adapter. 
    * 
    * @param array $routes 
    * 
    * @return void 
    */ 
    public function setRoutes(array $routes) 
    { 
     $this->routes = $routes; 
    } 

    /** 
    * Prepare a route for serialization. 
    * 
    * @param mixed $route 
    * 
    * @return mixed 
    */ 
    public function prepareRouteForSerialization($route) 
    { 
     $route->prepareForSerialization(); 

     return $route; 
    } 

    /** 
    * Gather the route middlewares. 
    * 
    * @param \Illuminate\Routing\Route $route 
    * 
    * @return array 
    */ 
    public function gatherRouteMiddlewares($route) 
    { 
     return $this->router->gatherRouteMiddlewares($route); 
    } 
} 

有沒有什麼解決辦法? 感謝

+0

你可以做'PHP工匠路線後,巴丁格API:list',看看它返回。你可能會擊中錯誤的URL –

+0

肯定的,但第一個錯誤顯示 –

+0

有你https://github.com/dingo/api/wiki/Configuration –

回答

2

使用$route->uri()

insted的的$route->getUri()

創建一個拉請求更新此

+0

巴丁格API已經正確地更新配置dingo'代碼只是運行'作曲家update' –

相關問題