用户
 找回密码
 入住 CI 中国社区
搜索
查看: 8901|回复: 16
收起左侧

[URL] CI干净链接的代价

  [复制链接]
发表于 2011-1-8 01:50:37 | 显示全部楼层 |阅读模式
ci的链接很干净,看起来很整齐,但由于参数的意义完全由在URL中的顺序决定,而不是通过键值对的形式来规定,所以由此导致很大不便。我觉得有以下几点:


1、搜索,搜索的时候可能想动态的增加、减小某些搜索关键词,例如,通过账号和年龄中的一个或者两个组合来搜索用户,在URL中,如果只出现一个参数,我们根据没办法知道这是账号还是年龄。
2、跳转到登录前页面,一般的做法是在地址上带一个参数ref="xxx"就可以了,但是换成CI后,你不能这么弄:
http://xxx.com/login/index/http://www.xxx.com/home。
3、分页,分页的时候必须指定一个base_url,大大降低了分页类的灵活性。不得不在每次分页的时候都写一大堆代码。
4、搜索+分页,这个老大难了,不说了。


在CI,要实现上面的功能,少不了用session。


其它大家补充。
 楼主| 发表于 2011-1-8 01:53:52 | 显示全部楼层
看到这篇分页的帖子
http://codeigniter.org.cn/forums/thread-5040-1-1.html
没用到session,不过核心思想是在模拟键值对。
发表于 2011-1-8 09:53:45 | 显示全部楼层
CI 是支持两种 URL 同时使用的。
即:干净的 URL 分段形式和 domain.com/控制器/方法?a=b&c=d 的形式。

我在论坛多次强调,要结合使用!大家可以看看 google 的 URL 是不是既有分段,又有 GET 传参。
如何开启 CI 的 GET 传参的传送门:
http://codeigniter.org.cn/forums/thread-692-1-1.html
发表于 2011-1-14 15:50:25 | 显示全部楼层
HEX正解
发表于 2011-2-10 15:21:47 | 显示全部楼层
即便是用CI的URI类,在搜索时也可以方便使用。
比如通过一个表单收集用户的关键字(这里仅以一个搜索选项为例),控制器初始是使用$this->input->post来接受这个关键字的。如果关键字搜索结果超过你分页数量的设定,可以把这个关键字放在uri的某个字段里,然后用$this->uri->segment()来接受这个关键字从而形成循环。
在CI中如果uri里有中文字段,可能控制器会报错,论坛里有相关的解决办法。
再有:搜索不用session。
发表于 2011-2-16 11:13:05 | 显示全部楼层
明显不看手册,该打。
发表于 2011-2-16 20:36:08 | 显示全部楼层
我用base64+serialize将条件放在uri的固定位置,不用session
发表于 2011-4-15 17:44:45 | 显示全部楼层
看下手册就行了,二种url格式,有你喜欢的。
发表于 2011-4-22 08:07:59 | 显示全部楼层
回复 7# visvoy

不错的方法~~
发表于 2011-4-27 22:54:58 | 显示全部楼层
其实还有其他方法解决的!

本版积分规则