检查CakePHP中语言文件夹内的View文件是否存在

时间:2014-03-24 19:41:49

标签: php cakephp localization internationalization

我遇到了一个烦人的问题,我没有找到任何答案(无论是在SO还是整个互联网上)。

我正在尝试开发一个多语言网站,我一直关注CakePHP's Internalization & Localization tutorial。我现在正在尝试将语言文件夹放在Views文件夹中,因此我可以根据所需的语言将用户重定向到视图文件。问题是,应该这样做的代码片段在我的应用程序中不起作用:

// App Controller Code.
public function beforeFilter() {
    $locale = Configure::read('Config.language');
    if ($locale && file_exists(VIEWS . $locale . DS . $this->viewPath)) {
        // e.g. use /app/View/fra/Pages/tos.ctp instead of /app/View/Pages/tos.ctp
        $this->viewPath = $locale . DS . $this->viewPath;
    }
}

我得到的错误表明没有VIEWS常量,这确实是真的。但教程没有说明这一点,所以我在这里有点迷失。我实际上可以从if语句中删除第二个条件并且代码可以工作,但我知道有一天我可能想要添加两种语言相同的视图文件(例如仅包含图像的视图)在这种情况下,应该没有重定向到语言文件夹,这正是这段代码的作用。

我知道我可能会遗漏一些非常明显的东西,因为即使是教程也没有提及它,但如果有人可以分享一些帮助,我会很高兴。

1 个答案:

答案 0 :(得分:0)

我找到了解决此问题的肮脏解决方案,我仍然希望能够找到更好的解决方案。无论如何,对解决方案:

我只是简单地取代了条件:

file_exists(VIEWS . $locale . DS . $this->viewPath))

file_exists(APP . DS . 'View' . DS . $locale . DS . $this->viewPath)

现在我的应用程序正确找到了路径。