gpt4 book ai didi

php - 调用未定义的方法 Illuminate\Routing\Route::getUri()

转载 作者:行者123 更新时间:2023-12-04 02:07:40 24 4
gpt4 key购买 nike

我正在尝试使用 dingo 为 laravel 5.3 制作 rest api。我在我的项目中设置了 dingo,并为测试创建了一个这样的 api 路由。

 $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);
}
}

有什么解决办法吗?谢谢

最佳答案

使用$route->uri()

$route->getUri() 代替

在更新后创建一个 pull request 到 dingo api

关于php - 调用未定义的方法 Illuminate\Routing\Route::getUri(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41863384/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com