V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
l890908
V2EX  ›  程序员

Thinkphp5 路由 变量不能放在最前面?

  •  
  •   l890908 · 2021-03-29 17:28:29 +08:00 · 1275 次点击
    这是一个创建于 1095 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Route::get(':url', 'Child/detail'); 能匹配

    Route::get('baby-:url', 'Child/detail'); 能匹配

    Route::get(':url/baby', 'Child/detail'); 不能匹配

    Route::get(':url-baby', 'Child/detail'); 不能匹配

    问题就是要把变量放在前面怎么破?
    第 1 条附言  ·  2021-03-29 19:20:41 +08:00
    不是不可以,而是

    http://www.tp5.com/2-baby 可以

    http://www.tp5.com/2-2-baby 不可以

    也就是传参里面不能包含-,包含就表示没有匹配到
    tabris17
        1
    tabris17  
       2021-03-29 17:31:38 +08:00
    不是很懂 tp 这个框架,不过一般路由都支持正则匹配的,如果 tp 不支持,那么我只能说……
    qwertyzzz
        2
    qwertyzzz  
       2021-03-29 17:35:28 +08:00
    看看文档示例 里面好像有
    l890908
        3
    l890908  
    OP
       2021-03-29 18:02:32 +08:00
    @qwertyzzz 没有,TP3 很容易实现,正则匹配就好了,这个版本反而还不行,真奇怪
    svipchao
        4
    svipchao  
       2021-03-29 18:06:26 +08:00
    ThinkPHP6 亲测可以
    ouyc
        5
    ouyc  
       2021-03-29 18:24:27 +08:00
    没搞过 php,从 :url 这个参数和第一、二个匹配情况来看,参数应该是以 : 标记开始,后面跟着参数名 url 。第三、四参数应该是 url/baby 、url-baby,暂时不知道用什么标记结尾,你可以看下文档
    ditel
        6
    ditel  
       2021-03-29 18:32:39 +08:00 via Android
    把不能匹配的放最前面
    l890908
        7
    l890908  
    OP
       2021-03-29 19:11:55 +08:00
    @ditel 变量有办法放在最前面吗?
    hm20062006ok
        8
    hm20062006ok  
       2021-03-29 20:06:51 +08:00
    Route::get('hello/:name/[:city]','index/index/hello',['param_depr' => '-'],[ 'name' => '\w+' , 'city' => '[A-Za-z]+' ]);
    表示只有在该路由规则访问的时候,才使用-作为 url 分隔符。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5387 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 06:50 · PVG 14:50 · LAX 23:50 · JFK 02:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.