请选择 进入手机版 | 继续访问电脑版

SpeedPHP框架

 找回密码
 注册成为新用户

QQ登录

只需一步,快速开始

查看: 4897|回复: 12

新版的speedphp 伪静态问题

[复制链接]
发表于 2015-9-30 11:12:54 | 显示全部楼层 |阅读模式
@jake 伪静态规则怎么设置呀?
/article/show/8.html
这种要怎么转到  ?c=article&a=show&id=8
在规则那里 '<c>/<a>/<id>.html' => '<c>/<a>/id=<id>',
这样写好像没有用?

发表于 2015-9-30 11:33:18 | 显示全部楼层
/article/show/8.html

配置是

'/article/show/<id>.html' => 'article/show'

id获取是$_GET["id"]
 楼主| 发表于 2016-3-1 16:02:55 | 显示全部楼层
jake 发表于 2015-9-30 11:33
/article/show/8.html

配置是

得跪在地上唱一首征服,我今天又试了很久,原来是这样实现的.谢谢jake大大, 我最近在用新版的speed做一个图片分享类的网站,到时候有问题再麻烦帮助一下.

 楼主| 发表于 2016-3-1 16:19:40 | 显示全部楼层
大地震了,
刚刚照着jake这样试了一下.确实单个可以.但是会有另外的问题. 先举个粟子.
这是规则.上个简单的.
  1. 'rewrite' => array(
  2.      'user/view/<id>.html'          => 'user/view',
  3.      '<c>/<a>.html'          => '<c>/<a>',
  4. );
  5. echo url('user','view',array('id'=>1));
复制代码
这是一个需求,但是我这个user/view方法.特么还有一种情况是不需要带ID的.就是查看自身的资料.
  1. echo url('user','view');
复制代码
这个时候就挂掉了.会输出这样.
  1. http://test.web.con/user/view/1.html
  2. http://test.web.con/user/view/<id>.html
复制代码
然后我改动了一下规则.
  1. 'rewrite' => array(
  2. '<c>/<a>.html'        => '<c>/<a>',
  3.                         '<c>/<a>/<id>.html'          => '<c>/<a>',
  4. );
复制代码
并且把url函数改动了一下.
  1.           //break;
  2.       }
  3. }
  4. return isset($urlArray[$url]) ? $urlArray[$url] : $url;
复制代码
把这个break注释掉就能达到我的目标.就是能支持 带参数和不带参数两种.
但是我记得jake有一次更新记录是说 "修复rewrite规则会一直匹配到结束的bug,修正为只匹配首次。"
我这样子改动,会不会对性能有影响,或者有别的影响.
有没有啥别的好方法,既支持带参数的规则.又不会覆盖掉不带参数的规则.
不然就得只能对每一个类型的URL写一串规则.






发表于 2016-3-2 08:38:12 | 显示全部楼层
xiaoziwuzui 发表于 2016-3-1 16:19
大地震了,
刚刚照着jake这样试了一下.确实单个可以.但是会有另外的问题. 先举个粟子.
这是规则.上个简单的. ...

按你的说法,不就是:

'rewrite' => array(
        'user/view/<id>.html'   => 'user/view',
        'user/view.html'   => 'user/view',
        '<c>/<a>.html'          => '<c>/<a>',
);


上面的就是不带id的,第二条是带ID的。因为肯定不可能有 http://localhost/user/view/.html这样的URL的。
 楼主| 发表于 2016-3-2 13:09:07 | 显示全部楼层
jake 发表于 2016-3-2 08:38
按你的说法,不就是:

'rewrite' => array(

这样配置确实 是可以实现想要的效果. 但是针对同类型的URL,好像要设置很多路由规则才行. . 再加上URL函数里面处理的流程其实也是蛮多的.会不会有性能问题? 能不能实现一个通用的路由规则.可以减化这些处理..
另外.jake.我用这个开发不收我版权费吧.

 楼主| 发表于 2016-3-2 13:14:07 | 显示全部楼层
我去. 今天服务器这么卡.我以为我发送没成功. 结果发了这么多条. 而且这表情输入已经挂掉了.点了没反应
发表于 2016-3-2 13:38:12 | 显示全部楼层
xiaoziwuzui 发表于 2016-3-2 13:09
这样配置确实 是可以实现想要的效果. 但是针对同类型的URL,好像要设置很多路由规则才行. . 再加上URL函数 ...

1. 相对来说,新版speed框架的路由实现,是最简洁而且高效的,几乎任何的规则都能做到。
2. 通用规则就是最后一条 '<c>/<a>.html'  => '<c>/<a>',

2. 开源东东不收钱


 楼主| 发表于 2016-3-3 10:10:16 | 显示全部楼层
jake 发表于 2016-3-2 13:38
1. 相对来说,新版speed框架的路由实现,是最简洁而且高效的,几乎任何的规则都能做到。
2. 通用规则就是 ...

昨天晚上发现一个新BUG.
如果我的方法名称是  cash_view,cash_edit这类的名字.
就会出BUG,方法名不能带_. 不知道这算不算一个BUG.


发表于 2016-3-3 11:37:43 | 显示全部楼层
xiaoziwuzui 发表于 2016-3-3 10:10
昨天晚上发现一个新BUG.
如果我的方法名称是  cash_view,cash_edit这类的名字.
就会出BUG,方法名不能带_. ...

方法名是建议驼峰命名,而且要以action开头,如actionIndex这样的方式。

没有action开头的,是不能通过URL访问的方法,仅供controller自身调用。
也就是可以带下划线,但是如果没有action开头,就不能通过URL访问而已

另外,把错误提示,也就是你所谓的bug的情况说明一下,这样看更容易判断你的问题所在。


您需要登录后才可以回帖 登录 | 注册成为新用户

本版积分规则

手机浏览|简版|中文PHP框架|开源协议|SpeedPHP.com ( 粤ICP备08008671号

GMT+8, 2020-8-7 03:15

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表