让我们说我想在codeigniter项目上列出产品并支持多种语言,这样有人会选择英文并获取网址example.com/products/5
,其中5是页码,其他人会选择意大利语并获取example.com/prodotti/5
。在幕后,我想要一个控制器,它传递一个语言参数和一个页码参数来处理这些请求。我有这样的少数情况,我正在考虑创建两个名为products和prodotti的控制器,然后通过为它们提供所需的参数来调用每个控制器中的第三个控制器。
有更好的方法吗?这可以通过路线实现吗?
答案 0 :(得分:0)
以下是我如何解决它:
<强>应用/配置/ routes.php文件强>
$route['products/(.*)'] = 'products/en/$1';
$route['prodotti/(.*)'] = 'products/it/$1';
<强>应用/控制器/ products.php 强>
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Products extends CI_Controller {
public function index($lang, $nr)
{
echo 'lang: ', $lang, ' nr: ',$nr;
}
// https://gist.github.com/1096571
function _remap($method)
{
$param_offset = 2;
if ( ! method_exists($this, $method))
{
$param_offset = 1;
$method = 'index';
}
$params = array_slice($this->uri->rsegment_array(), $param_offset);
call_user_func_array(array($this, $method), $params);
}
}