【问题标题】:How to handle dashes route in laravel 5 for multiple parameter如何在 laravel 5 中为多个参数处理破折号路由
【发布时间】:2016-01-17 20:03:35
【问题描述】:

这是我的网址结构

http://example.com/embed-id-size

http://example.com/embed-adsdfwer3-640x240

其中 size 是可选参数。

我是这样在 laravel 5 的 routes.php 中编码的。

Route::any('embed-{id}-{size?}',['uses'=>'Example@video','as'=>'embed']);

最重要的是运行良好没问题,但是当我的 id 已经像这样 adsdfw-r3

http://example.com/embed-adsdfw-r3-640x240 http://example.com/embed-adsdfw-r3

上面两个 url laravel route not working 和 route 假设有三个参数。

经过多次搜索,我发现了这个->where('id', '.*(?=-)'),我将它应用到我的路线中,并且只有当我为我的网址提供大小但在应用->where('id', '.*(?=-)') 后大小是可选参数时,它才能正常工作。 p>

请帮我解决这个问题。

希望你能理解我的问题。

【问题讨论】:

  • 我知道这篇文章很旧(并且适用于 Laravel 5),但对于使用较新版本的任何人(我正在使用 8.x){size?} 可以使用或不使用-,但是如果用户导航到“size”为空的/embed-123-,将会中断。

标签: php laravel routes laravel-5


【解决方案1】:

实际上,您没有简单的方法来解决这个问题,因为 id 中的破折号。

我会确保没有破折号,或者我会捕获整个 {id}-{size?} 并稍后计算最终是否有分辨率以及哪个是 id。

【讨论】:

  • 是的,如果 - 是 id 中的有效字符,你真的不能使用它作为分隔符...也许使用 _/ 作为分隔符?
  • 那我该怎么办,请做一些代码并给我例子
  • 我的 id 有 13 个字符
  • 所以你可以用 where 解决它: where(['id' => '[az\-]{13}'], 'size' => '[0-9]+x [0-9]+') 之类的,暂时无法测试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-18
  • 2019-03-17
  • 1970-01-01
  • 2011-02-21
  • 2020-08-28
  • 2017-09-30
  • 2018-08-24
相关资源
最近更新 更多