2017-12-14 23:03:05 2252次浏览 2条回答 0 悬赏 20 金钱

WX20171214-225802@2x.png

这条规则 ,在参数都齐全的时候 是生效的,这是筛选,
product_2_0_0_0_1

但是有的时候 是没有筛选项的,只有一个page:
路由就变成这样了:
product/?page=2

我还是想要它变成是
product_0_0_0_0_2

这规则 要怎么写呢,

PS 另外再加一条规则 我已经试过了,不行呢
WX20171214-230203@2x.png

补充于 2017-12-15 09:20

或者 我把0都去掉,规则 写成 product_<page:\d+> 这样子 也不能出现 product_2的路由,还是 ?page=2

最佳答案

  • Jeen 发布于 2017-12-15 11:31 举报

    核查源码发现,确实没法直接通过规则 设置 相关参数的默认值。
    但是 设置 多条规则的方法是可行的

    测试规则(2.0.12 下测试可行)
    
                "site/test_<aa:\d+>_<bb:\d+>_<cc:.*>" => "site/index",
                "site/test_0_0_<cc:.*>" => "site/index",
    

    可能是你用的版本比较老? 或者你可以 调整一下 规则的创建顺序,把包含默认值的规则放到前面。

    如果还是不行,建议在 使用的地方 手动填充相关默认值,如

    Url::to(['site/index', 'aa' => 0, 'bb' => 0, 'cc' => 123]);
    
    1 条回复
    回复于 2017-12-15 12:47 回复

    谢谢 我发现了,规则是可以的,就是url::to它不起效果! 手动在浏览器里面添加,它是生效的

  • 回答于 2017-12-15 11:31 举报

    核查源码发现,确实没法直接通过规则 设置 相关参数的默认值。
    但是 设置 多条规则的方法是可行的

    测试规则(2.0.12 下测试可行)
    
                "site/test_<aa:\d+>_<bb:\d+>_<cc:.*>" => "site/index",
                "site/test_0_0_<cc:.*>" => "site/index",
    

    可能是你用的版本比较老? 或者你可以 调整一下 规则的创建顺序,把包含默认值的规则放到前面。

    如果还是不行,建议在 使用的地方 手动填充相关默认值,如

    Url::to(['site/index', 'aa' => 0, 'bb' => 0, 'cc' => 123]);
    
您需要登录后才可以回答。登录 | 立即注册
yoyo0926
见习主管

yoyo0926

注册时间:2016-04-20
最后登录:2022-04-01
在线时长:11小时46分
  • 粉丝1
  • 金钱295
  • 威望0
  • 积分405

热门问题