url 根据类型和名称在 codeigniter 中进行路由

url routing in codeigniter according to the type and name

我已阅读 CI 用户指南中的 url 路由主题。

我是第一次这样做,所以我可能误解了一些技巧,请随时指出。

我正在根据产品创建自定义 url。 目前我通过 Id 获取单个产品详细信息。

我已经使用这个锚标签向控制器发送一个 id。

<a href="<?php echo base_url("product_controller/getSingle_product_function/{$value->product_id}"); ?>">

所以我的 url 是:myWebsite/product_controller/getSingle_product_function/1

我想要的 url 是:myWebsite/product_name-product_type/1

为了得到这个 url 我必须在 routes.php 处创建一条路线,但问题是我如何获得我的产品名称并输入到 routes.php 或如何我明白了。

$route['product_name-product_type/1'] = "product_controller/getSingle_product_function/1";

更新的作品:

现在,在看到一些答案后,我创建了一个锚点,如下所示,

<a href="<?php echo base_url("product_controller/getSingle_product_function/product_name/product_type/produt_id"); ?>">

所以路由之前的 url : www.website.com/controller/function/xyz-name/abc-type/1

&然后我创建了一个根,

$route['(:any)/(:any)/(:any)/(:num)'] = "product_controller/product_function/(:any)/(:any)/(:any)/";

最终Url路线后:www.website.com/xyz-name/abc-type/1

现在唯一的问题是我的最终路线是否正确?

这样试试..

$route['product_name-product_type/(:num)'] = "product_controller/getSingle_product_function/";

(:num) is a wildcard that match a segment containing only numbers.

$route['(:any)/(:num)'] = 'product_controller/getSingle_product_function//';

请记住,这必须位于路由文件中的较低位置。我通常会把它放在 default_controller.

的正上方
public function getSingle_product_function($product_details, $product_id) {
    $product = explode('-', $product_details);
    $name = $product[0];
    $type = $product[1];
}

订单将按照 $1/$2 的顺序传递到控制器函数中。