使用slug和id进行路由分离?

时间:2016-05-28 15:03:36

标签: laravel laravel-routing

router->get('{slug}-{id}', 'Controller@method');
router->get('{otherSomething}', 'Controller@method2');

这是我的路由,第一行不起作用。怎么解决?我的软件规范不允许在第一次路由中使用斜杠(/)而不是破折号( - )。

对于下面的路由器样本具有相同的掩码

site.com/slug-name-and-sth-100
site.com/other-something

1 个答案:

答案 0 :(得分:2)

假设您的other-something没有以号码结尾,您可以使用Regular Expression Constraints,例如您可以使用以下ID定义路线:

$router->get('{slug}-{id}', 'Controller@method')->where('id','[0-9]+');

现在应该可以了。但是你需要记住把这条路线放在路线前面:

$router->get('{otherSomething}', 'Controller@method2');

否则它不会工作。

修改

如果两个网址的格式相同,则应完全删除{slug}-{id}路由,并将{otherSomething}的所有流量指向一个方法(例如method2)。

现在你应该解析$otherSomething变量并决定你应该做什么:

  • 要么你决定格式{slug}-{id}你现在可以为此运行服务
  • 您将为其他案件运行其他服务