【问题标题】:url routing in codeigniter according to the type and name根据类型和名称在codeigniter中进行url路由
【发布时间】:2017-08-07 07:35:13
【问题描述】:

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

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

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

我已使用此锚标记向控制器发送 id。

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

所以我的网址是:myWebsite/product_controller/getSingle_product_function/1

我想要的网址是: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"); ?>">

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

& 然后我创建了一个根目录,

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

Final Url After route : www.website.com/xyz-name/abc-type/1

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

【问题讨论】:

    标签: php codeigniter url-routing


    【解决方案1】:

    像这样尝试..

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

    (:num) 是一个通配符,匹配仅包含数字的段。

    【讨论】:

    • 先生,我怎样才能得到我的产品名称并在 url 上输入?它不是静态的,每个产品都有不同的名称和类型。那么如何为这种类型的网址做呢。
    • 只需先从uri 使用$id = $this-&gt;uri-&gt;segment(2) 获取产品的id,然后执行数据库查询以获取产品名称。
    • 我明白了,先生,我已经得到了产品详细信息,但我想你告诉我,我必须输入一个名称并输入锚点,然后我就明白了。 ??
    • 为什么需要从id获取产品名称。可以在url中使用name代替id。
    • 我明白了,先生,我通过 Id 获得产品的所有详细信息,但对于 SEO,我想让我的网址更完美,或者我说的更恰当,所以这就是我想要产品名称并输入的方式网址
    【解决方案2】:
    $route['(:any)/(:num)'] = 'product_controller/getSingle_product_function/$1/$2';
    

    请记住,这必须在路由文件中较低。我通常会把它放在 default_controller 的正上方。

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

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

    【讨论】:

    • 先生,我已经更新了我的问题,只是告诉我我创建的路线是否正确?
    • $route['(:any)/(:any)/(:any)/(:num)'] = "product_controller/product_function/$1/$2/$3/$4";跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-05
    • 2011-01-29
    相关资源
    最近更新 更多