当前位置: 首页 > 知识库问答 >
问题:

调用未定义的方法Illumbite\Routing\Route::getUri()

陆光济
2023-03-14

我正在尝试使用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}"
]
}
}

如图所示。

我已经搜索并找到了这个对未定义方法illumbite\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);
    }
}

有什么解决办法吗?谢了

共有1个答案

林子石
2023-03-14

使用<代码>$路由-

insted of$route-

更新后创建一个对dingo api的拉取请求

 类似资料:
  • 我刚刚安装了Laravel 5.1,访问了我的应用程序主页,我发现以下错误: 哎呀,好像出了什么事。 1/1 路由中的FatalErrorException。php第16行: 调用未定义的方法Illumbite\Routing\Route::get() 在路线中。php第16行 这是我的routes.php文件:

  • 我是拉雷维尔的新手。我有一个控制器,我只想从标题中获取授权的值。我看到了其他堆栈溢出答案,建议我使用

  • 我刚开始学习Laravel,但我在路由到控制器时遇到了问题,我有一个名为“App”的控制器,其中有一个名为index的函数,它说即使我在路由中设置了它,也无法在“App”控制器中找到它 错误 错误 调用到未定义的方法照明\支持\Facades\应用程序::索引() http://localhost:8000/anasayfa 应用程序。php 网状物php 这个错误的原因是什么?

  • 问题内容: 我正在尝试对页面登录进行编码,但在此错误中我处于停止状态 PLIZ在这里告诉我错了事 问题答案: 用于准备的语句。例如 您正在尝试直接在主数据库对象上执行查询。对于PDO,这意味着 您确实应该研究准备好的语句。您很容易受到SQL注入攻击的影响,并且由于您从一开始就使用PDO,因此不编写安全查询基本上是不可原谅的。

  • 问题内容: 这是我的代码: 我在最后一行收到以下错误: 调用未定义的方法mysqli_stmt :: get_result() 这是conn.php的代码: 如果我写这行: 打印 “未准备的声明” 。如果我直接在IDE中运行查询替换?用值标记,效果很好。请注意,$ conn对象在项目中的其他查询中可以正常工作。 请帮忙....... 问题答案: 请阅读此方法的用户说明: http://php.ne

  • 问题内容: 不知道为什么这不起作用。我相信你们都知道我在这里想要达到的目标。 当脚本运行时,我得到一个参考,它引用了这段代码: 我正在使用codeigniter2框架,因此如果我的表单页面对某些人没有意义,则表示歉意。 new_page.php(相关位) 并在new_page.validation.js中 任何帮助将不胜感激!欢呼的家伙 问题答案: 可能会破坏插件的正常运行。根据文档, “布尔tr