【问题标题】:Laravel routes not working properlyLaravel 路由无法正常工作
【发布时间】:2017-10-15 20:50:13
【问题描述】:

我在api.php 路由文件中有此代码,用于laravel 5.4

Route::get('/lectures/{id}', function ()
{
    dd("lecture route");
});

Route::get('/lectures/send-request', function ()
{
    dd("send-request route");
});

问题是当我访问localhost:8000/api/lectures/send-request 时,输出是 'lecture route' 这是这个 url localhost:8000/api/lectures/{id}

但是当我改变路线的顺序时它会正常工作

Route::get('/lectures/send-request', function ()
{
    dd("send-request route");
});

Route::get('/lectures/{id}', function ()
{
    dd("lecture route");
});

现在当我访问localhost:8000/api/lectures/send-request 时,输出是'send-request route'

那么怎么了?为什么会这样?

【问题讨论】:

  • 你的文件名是api.php吗?你不是在 route.php 中写这个吗?
  • {id} 是可变的,因此 {id} = 发送请求。路由文件将匹配它找到的第一个文件。所以这一切都说得通。
  • @Exprator 你一定没有使用 laravel 5.4
  • @Daan Yesss,你是对的

标签: php laravel routes


【解决方案1】:

这是因为 Laravel 自上而下匹配路由。这意味着要匹配的第一个路由是正在使用的路由。 /lectures/send-request 匹配 '/lectures/{id}' 并将 $id 设置为 'send-request'

【讨论】:

  • 是的,我只是认为{id} 代表数值
  • Laravel 将路由中的所有参数解释为字符串
【解决方案2】:

路线完全按照预期工作。路由的优先级与定义相同。

GET /lectures/{id}
GET /lectures/send-request

您已经定义了两条路线,其中第二条路线基本上是第一条路线的选项之一。当您访问/lectures/send-request 时,它满足路由/lectures/{id} 的条件,其中id 设置为send-request

您可以根据自己的喜好切换路线的顺序,也可以更改其中一条路线。

【讨论】:

  • 是的,我只是认为{id} 代表数值
猜你喜欢
  • 2018-01-17
  • 2016-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-23
  • 2014-09-30
相关资源
最近更新 更多