Tor*_*rez 5 php regex routing codeigniter http
我正在开发一个包含产品类别和产品的CI的电子商务网站.我想路由URL以便它将转到产品控制器,然后为第一个段运行getCategoryByName函数,然后为第二个段运行getProductByName.这是我有的:
URL: products/docupen/rc805
routes.php: $route['products/([a-z]+)'] = "products/getCategoryByName/$1"; $route['products/([a-z]+)/([a-z0-9]+)'] = "products/$1/getProductByName/$2";
但它不起作用."docupen"是类别,"rc805"是产品.
提前致谢.
感谢大家的帮助.这就是我最终需要的东西.
$route['products/:any/:num'] = "products/getProductByID"; $route['products/:any/:any'] = "products/getProductByName"; $route['products/:any'] = "products/getCategoryByName";
Ste*_*son 11
我的回答建立在科林的答案上.
当我在CodeIgniter中玩弄路线时,我得出的结论是路线的顺序非常重要.当它找到第一个有效路由时,它将不会执行列表中的其他路由.如果找不到任何有效路由,则它将处理默认路由.
我为我的特定项目玩的路线如下:
$route['default_controller'] = "main";
$route['main/:any'] = "main";
$route['events/:any'] = "main/events";
$route['search/:any'] = "main/search";
$route['events'] = "main/events";
$route['search'] = "main/search";
$route[':any'] = "main";
Run Code Online (Sandbox Code Playgroud)
如果我输入" http://localhost/index.php/search/1234/4321 "它将被路由到主/搜索,然后我可以使用它$this->uri->segment(2);来检索1234.
在你的场景中我会尝试(订单非常重要):
$route['products/:any/:any'] = "products/getProductByName";
$route['products/:any'] = "products/getCategoryByName";
Run Code Online (Sandbox Code Playgroud)
我不知道路由你想要的方式(products/$1/getProductByName/$2),但我不确定如何创建一个控制器来处理这种特殊形式的URI.使用$this->uri->segment(n);控制器中Colin提到的语句,您应该能够做您想做的事情.
您应该使用URI类从您的URL中检索"docupen"和"rc805"段.然后,您可以在所需的任何函数中使用这些值.
例如,如果您的网址是www.yoursite.com/products/docupen/rc805,则可以在产品控制器中使用以下内容来检索细分并将其分配给变量:
$category = $this->uri->segment(2); //docupen
$product = $this->uri->segment(3); //rc805
Run Code Online (Sandbox Code Playgroud)
然后你可以使用$ category和$ product.
| 归档时间: |
|
| 查看次数: |
14952 次 |
| 最近记录: |