致命错误:未找到类“Zend_Locale”

时间:2013-08-28 12:27:52

标签: php zend-framework localization zend-framework2

我正在使用Zend Framework 2开发一个Web应用程序。

我想实现自动内置的当前区域设置的网址,即/ locale / controller / action / etc.我写了这个:

<?php

$locale = new Zend_Locale();

?>

<ul class="nav">
    <li>
        <a href="/<?php echo $locale->getLanguage(); ?>/devices">Devices</a>
        <ul>
            <li>
                <a href="/devices/add"><img src="img/navbar/add.png" alt="+"> Add</a>
            </li>
        </ul>
    </li>
    <li>
        <a href="/<?php echo $locale->getLanguage(); ?>/favorites">Favorites</a>
        <ul>
            <li>
                <a href="/favorites/add"><img src="img/navbar/add.png" alt="+"> Add</a>
            </li>
        </ul>
    </li>
</ul>

并将其放入我以这种方式包含的navbar.phtml文件

include("navbar.phtml");

在我的Application / view / layout / layout.phtml中。

但是,我只能得到这个

Fatal error: Class 'Zend_Locale' not found in blabla\module\Application\view\layout\navbar.phtml on line 3

怎么了?我忘记了一些“使用”?对不起,我是php的新手。

2 个答案:

答案 0 :(得分:1)

必须

安装 PHP intl扩展程序。

答案 1 :(得分:0)

好的,我刚刚解决了。

上面的代码与旧版Zend Framework相关。

在Zend Framework 2中,正确的代码是:

<?php

$translator = new Zend\I18n\Translator\Translator();
$locale = substr($translator->getLocale(), 0, 2);

?>

<ul class="nav">
    <li>
        <a href="/<?php echo $locale ?>/devices">Devices</a>
        <ul>
            <li>
                <a href="/<?php echo $locale ?>/devices/add"><img src="img/navbar/add.png" alt="+"> Add</a>
            </li>
        </ul>
    </li>
    <li>
        <a href="/<?php echo $locale ?>/favorites">Favorites</a>
        <ul>
            <li>
                <a href="/<?php echo $locale ?>/favorites/add"><img src="img/navbar/add.png" alt="+"> Add</a>
            </li>
        </ul>
    </li>
</ul>

不要忘记启用intl PHP扩展!