我遇到了一个烦人的问题,我没有找到任何答案(无论是在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
语句中删除第二个条件并且代码可以工作,但我知道有一天我可能想要添加两种语言相同的视图文件(例如仅包含图像的视图)在这种情况下,应该没有重定向到语言文件夹,这正是这段代码的作用。
我知道我可能会遗漏一些非常明显的东西,因为即使是教程也没有提及它,但如果有人可以分享一些帮助,我会很高兴。
答案 0 :(得分:0)
我找到了解决此问题的肮脏解决方案,我仍然希望能够找到更好的解决方案。无论如何,对解决方案:
我只是简单地取代了条件:
file_exists(VIEWS . $locale . DS . $this->viewPath))
的
file_exists(APP . DS . 'View' . DS . $locale . DS . $this->viewPath)
现在我的应用程序正确找到了路径。