0

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

我想实现自动内置当前语言环境的url,即/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 的新手。

4

2 回答 2

1

必须安装PHPintl扩展。

于 2013-08-28T12:32:58.703 回答
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>

并且不要忘记启用国际 PHP 扩展!

于 2013-08-28T12:58:48.830 回答