Php CodeIgniter:分页与参数冲突
这就是我的情况: 我有一个页面localhost/ctc/product来显示产品,localhost/ctc/product/abcxyz来显示单个产品abcxyz的详细信息。因为产品列表太长,所以在我想对主页分页之前,它工作得很好。我使用常用的分页类进行分页,但当我进入下一页时,url变成这样:localhost/ctc/product/1,我认为它将分页编号误认为是一个产品,页面上什么也没有显示。那么我该如何解决这个问题呢?谢谢大家,我的英语不好,很抱歉Php CodeIgniter:分页与参数冲突,php,codeigniter,parameters,pagination,conflict,Php,Codeigniter,Parameters,Pagination,Conflict,这就是我的情况: 我有一个页面localhost/ctc/product来显示产品,localhost/ctc/product/abcxyz来显示单个产品abcxyz的详细信息。因为产品列表太长,所以在我想对主页分页之前,它工作得很好。我使用常用的分页类进行分页,但当我进入下一页时,url变成这样:localhost/ctc/product/1,我认为它将分页编号误认为是一个产品,页面上什么也没有显示。那么我该如何解决这个问题呢?谢谢大家,我的英语不好,很抱歉 问题解决了。感谢John B和ot
问题解决了。感谢John B和otporan。您应该使用正则表达式限制url最后一个参数中可以包含的内容 您有3条路线:
ctc/product
ctc/product/abcxyz
ctc/product/1
您必须向路由器机制解释,2路由应该只接受字符串作为最后一个参数,
第三条路径只能接受数字作为最后一个参数
您可以这样做:
$route['ctc/product/([a-z]+)'] = "controller/method/$1";
$route['ctc/product/([0-9]+)'] = "controller/method/$1";
所以现在有两条路由在URI中具有相同数量的“参数”,但路由器意识到了差异。一个将字符串作为最后一个参数,最后一个路由将整数作为最后一个参数
我没有时间在本地服务器上测试这个。但是你应该知道这是怎么回事
Joust read through docs here:我个人会使用不同的函数来显示产品细节,但如果你坚持认为你可以通过在uri段上使用is_numeric()函数来解决问题,并让它相应地执行操作。+1,但要注意的是,如果你需要接受的字符超过a到z,您必须更新正则表达式以接受它,或者只需使用
(:any)
。