我创建了一个网站,其中包含带有 url 的产品:http://somesite.com/controller/function/brand_id/product_id。我想将这些 ID 更改为更易于搜索的名称。所有这些 ID 都在带有名称的数据库中。是否可以从数据库中获取这些名称并将它们放入 URL 中?这是因为我无法使用路由工具。产品和品牌是动态的,可以随时删除或(名称)更改。所以不能把它硬编码到路线中。
谢谢你的努力
我创建了一个网站,其中包含带有 url 的产品:http://somesite.com/controller/function/brand_id/product_id。我想将这些 ID 更改为更易于搜索的名称。所有这些 ID 都在带有名称的数据库中。是否可以从数据库中获取这些名称并将它们放入 URL 中?这是因为我无法使用路由工具。产品和品牌是动态的,可以随时删除或(名称)更改。所以不能把它硬编码到路线中。
谢谢你的努力
您可以使用_remap
Codeigniter 内置函数在 url 中使用多个函数:在控制器中使用以下函数:
public function _remap($method){
if ($method == 'project-name')
{
//display project1
}
elseif($method == 'project-name2')
{
//display project2
}
另一个使用参数的例子:
public function _remap($method, $params = array())
{
$method = 'process_'.$method;
if (method_exists($this, $method))
{
return call_user_func_array(array($this, $method), $params);
}
show_404();
}
$method
在function
您的网址中:
http ://somesite.com/controller/function/brand_id/product_id
您可以通过从数据库中提取它们来对不同的方法执行相同的操作
看看这里:http ://codeigniter.com/user_guide/general/controllers.html#remapping
brand_id
您应该能够通过为和设置一些通配符路由来完成此操作product_id
。当您对产品执行查询时,您只需检查 URI 段是整数(ID)还是字符串(名称)并相应地查询数据库。我将存储产品名称的 URL 友好版本(替换空格和特殊字符),然后对其进行查询,并将其用于在整个应用程序中生成链接。
更新:这是您在路由所有内容的方法中所需的逻辑的代码示例:
public function search($brand, $product)
{
if (is_int($brand))
{
// Look up the brand using an ID
$this->db->where('id', $brand);
}
else
{
// Look up the brand based on the URI segment
$this->db->where('uri_friendly_name', $brand);
}
// Do the same with adding conditionals for $product and then run the query
}
这是您需要的路线示例:
$route['controller/function/(:any)/(:any)'] = "controller/search";