将Controller名称更改为productname

时间:2012-11-30 08:40:26

标签: php codeigniter

我想为我的产品创建更多SEO友好的URL,这些URL存储在数据库中。

如何从URL获取ProductName?

例如:

http://domain.com/ProductName

ProductName不是Controller。我需要从控制器验证ProductName并显示它。

4 个答案:

答案 0 :(得分:4)

就个人而言,我会创建一个名为products的控制器,它接受一个参数来从数据库中查找产品:

class Products extends CI_Controller
{
    public function index($productname)
    {
        $data['product'] = $this->db->get_where('products', array('urlname' => $product))->row_array();
        // other functionality here and view loading
    }
}

然后为此方案添加路由(config / routes.php):

$route['other/routes/first'] = "their/correct/controller/$1";
$route['/(:any)'] = "/products/index/$1";

自从我使用CI以来已经有一段时间了,但这应该有助于指出我希望的正确方向。

答案 1 :(得分:1)

您可以在routes.php中添加路由规则 将请求重定向到产品控制器

$route['(:any)'] = "product/$1";

在您的产品控制器中,从URI细分中获取产品名称

$product_name = $this->uri->segment(2);

答案 2 :(得分:0)

您可以使用URI Routing (Routing Rules)

路由规则在application / config / routes.php文件中定义。在其中,您将看到一个名为$ route的数组,它允许您指定自己的路由条件。可以使用通配符或正则表达式

指定路由
$route['/(:any)'] = "/products/index/$1";

此示例将导致:http://www.example.com/MyProductName/加载产品类,并将名称作为参数。

答案 3 :(得分:-3)

您可以使用CI路线来实现此目的

编辑Application / config / routes.php

$route['/(:any)'] = "/products/index/$1";