【问题标题】:CodeIgniter: Pagination conflict with ParameterCodeIgniter:分页与参数冲突
【发布时间】:2012-10-10 18:42:09
【问题描述】:

这是我的情况: 我有页面 localhost/ctc/product 显示产品和 localhost/ctc/product/abcxyz 显示单个产品 abcxyz 的详细信息。它工作正常,直到我想对我的主页进行分页,因为产品列表太长了。我使用通常的分页类进行分页,但是当我进入下一页时,网址变成这样: localhost/ctc/product/1 我认为它会将分页号误认为是产品并且页面什么也不显示.那么我该如何解决这个问题呢?谢谢大家,对不起我的英语不好。

问题解决了。感谢 John B 和 otporan。

【问题讨论】:

  • 就我个人而言,我会使用不同的函数来显示产品详细信息,但如果您坚持,您可能会通过在 uri 段上使用 is_numeric() 函数并让它采取相应的行动来解决问题。跨度>

标签: php codeigniter parameters pagination conflict


【解决方案1】:

你应该用正则表达式限制 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";

所以现在你有 2 个路由在 URI 中具有相同数量的“参数”,但路由器知道差异。一个将字符串作为最后一个参数,最后一个路由将整数作为最后一个参数。

我没有时间在本地服务器上进行测试。但是您应该知道这应该如何工作。

在此处阅读文档:Codeigniter Routing

【讨论】:

  • +1,但只是想注意,如果您需要接受的不仅仅是字符 a 到 z,则必须更新正则表达式以接受它,或者只需使用 (:any) 代替它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-17
  • 2018-10-01
  • 1970-01-01
相关资源
最近更新 更多