0

我有一些关于 cakePHP 的问题,我花了很长时间在谷歌上搜索解决方案,但由于我没有找到任何问题,我不确定我是否采取了正确的方法。

所以,我有一个菜单/站点地图,它部分是静态的(xml 文件 - i10n),部分是动态的(数据库 i18n)

我被要求缓存菜单,以便:

  1. 如果不存在,组件会为每种语言创建整个菜单的缓存 xml 文件

  2. 帮助程序创建一个缓存 html,该缓存 html 从组件创建的 xml 文件格式化

  3. 布局使用助手在页面中添加菜单

问题:

  • 如何从帮助程序和组件中获取可用语言列表?

  • 这是

    $this->L10n = new L10n(); $this->L10n->lang
    

    获得实际语言的正确方法?

  • 如果我在 app_controller 中导入助手/组件,而不是在每个控制器中输入它们

    class AppController extends Controller {
        var $components = array('menu', 'otherComponent');
        var $helpers = array('menuCache');
    
        function beforeFilter(){
            $this->menu->doSomething();
        }
    }
    

call to undefined object $htmlecho $html->charset();布局中得到一个

无法理解为什么...

4

1 回答 1

3

您可以使用Configure::read('Config.language'). CakePHP 食谱的一部分指出:

当前语言环境是 Configure::read('Config.language') 的当前值。Config.language 的值在 L10n 类中分配 - 除非它已经设置。

负责翻译的类 I18n 使用__()Config.language,除非您在 中覆盖它,否则bootstrap.php该变量包含所选语言。实际上,即使您覆盖它,它仍然会包含使用的语言(可能存在不一致,因为 I10n 并没有真正意识到更改,但我从未遇到过任何更改)。

要获取语言列表,您可以使用L10n::catalog(). 但是,我不确定它是否是您所追求的,因为它列出了 CakePHP 知道的所有语言,而不仅仅是实际在app/locale.

于 2009-05-29T07:41:02.183 回答