2019-09-11 18:32:39 1491次浏览 1条回答 0 悬赏 10 金钱
http://fw.kjy.com/warehouse?c=2&big=1&s=14&w=20&a=12&b=13

上面的路由想设置成下面的路由访问,请问一下如何设置呢?

http://fw.kjy.com/warehouse/c_2/big_1/s_14/w_20/a_12/b_13

最佳答案

  • 发布于 2019-09-12 18:08 举报

    几个方案吧:
    1、如果你的参数都是必不可少的,且参数顺序固定,那 很简单

    'warehouse/c_<c>/big_<big>/s_<s>/w_<w>/a_<a>/b_<b>' => 'warehouse/index'
    

    2、如果你的参数可选,或顺序不定,简单处理的话 就是把他们都弄到一个变量里,自己在程序中拆分这些变量

    'warehouse/<params:\S*>' => 'warehouse/index'
    

    params 这个参数得到的是 c_2/big_1/s_14/w_20/a_12/b_13 这样一个字符串,自己拆分处理

    3、讲究点的做法,自己写一个 专门处理这种 URL 的类,比如叫 MyUrlRule,实现 yii\web\UrlRuleInterface 这个接口,实现其中的 parseRequestcreateUrl 两个方法,基本上也就是 拆分 和 拼接 的操作,代码就不在这里献丑了,然后

    'urlManager' => [
      ...
      'rules' => [
        ...
        ['class' => 'app\components\MyUrlRule'],
        ...
      ]
    ]
    
    1 条回复
    回复于 2019-09-16 09:35 回复

    您好,由于参数不固定,并且位置不确定,有时候会选择一个参数,有时候会选择多个参数,我试了一下'warehouse/<params:\S*>' => 'warehouse/index',这个获取不到参数呢,并且页面报404,请问一下是怎么回事呢?

    没有找到数据。
您需要登录后才可以回答。登录 | 立即注册
PHP学院的中学生
副总裁

PHP学院的中学生

注册时间:2018-10-23
最后登录:2024-04-07
在线时长:168小时1分
  • 粉丝29
  • 金钱4730
  • 威望30
  • 积分6710

热门问题