CodeIgniter行为,构造函数和路由

时间:2014-11-08 14:42:12

标签: php codeigniter

我第一次使用CodeIgniter 2.0创建一个多语言网站,其中主页包含幻灯片。我正在我的笔记本电脑上开发它 - localhost / website /.

我正在使用routes.php文件来指定要调用哪个语言函数来设置变量,具体取决于格式为http://localhost/website/language/page_id/some-page-title的url。因此http://localhost/website/en/1/Home-Page给出了page_id 1的英文页面。

路由文件因此具有:

$route['default_controller'] = "content";
$route['en/(:num)/(:any)'] = "content/en/$1";
$route['de/(:num)/(:any)'] = "content/de/$1";
$route['es/(:num)/(:any)'] = "content/es/$1";
etc

内容控制器中的语言功能(en函数)的示例是:

public function en ($page_id) {
        $language="en";
        $lang_array['css']="base.css";
        $this->get_content($page_id, $lang_array);
}

然后get_content函数会执行所有操作。

内容控制器的索引功能如下所示:

public function index() {
            //setting defaults for when arrive straight at home page or with no language in url
            $page_id=1;
            $lang_array['language']="en";
            $lang_array['css']="base.css";
            $this->get_content($page_id, $language);
        }

我的问题是,当我去http;//localhost/website/时,一切正常,包括幻灯片。但是,当我转到网址http://localhost/website/en/1/Home-Page时,一切正常,除了幻灯片中的图片不会出现(即使它们都执行相同的代码,当我查看页面上的视图源时,html输出是相同的)

我唯一能想到的事实是,如果我只是放http;//localhost/website/那么将调用索引函数来激活构造函数,但是如果我放置http://localhost/website/en/1/Home-Page那么索引和构造函数被绕过了。然而,不知道为什么其他的东西仍然有效,但图片幻灯片没有。这是你认为的原因吗?任何解决方案?

由于

汤姆·

1 个答案:

答案 0 :(得分:0)

我能想到的是未定义变量上的某种JavaScript错误,可能与未设置的$ lang_array ['language']有关。

在索引中,您将密钥设置为默认为“en”,

public function index() {
        //setting defaults for when arrive straight at home page or with no language in url
        $page_id=1;
        $lang_array['language']="en";
        $lang_array['css']="base.css";
        $this->get_content($page_id, $language);
    }

但是在 en 方法中,你没有

public function en ($page_id) {
    $language="en";
    $lang_array['css']="base.css";
    $this->get_content($page_id, $lang_array);

}

因为它们看起来几乎相同,所以你应该将相同的行为抽象为私有函数,或者修改路由以将语言作为参数发送到单个函数。