zend バージョン 1.12 の zend フレームワーク プロジェクトがあります。私は xml ファイルで zend_navigation を使用し、gettext アダプターで zend_translation を使用しています。
このコードは、メイン メニューを作成します。
echo '<ul class="nav1">';
foreach ($this->container as $page) {
// check if it is active (not recursive)
$isActive = $page->isActive(false);
$liClass = $isActive ? ' class="active"' : '';
echo '<li ' . $liClass . '>' . $this->menu()->htmlify($page);
// subnavigation in second layer
if (sizeof($page) > 0) {
echo '<ul class="subNavHead">';
foreach ($page as $subpage) {
$isActive = $subpage->isActive(false);
$liClass = $isActive ? ' class="active"' : '';
echo '<li ' . $liClass . '>' . $this->menu()->htmlify($subpage) . '</li>';
}
echo '</ul>';
}
echo '</li>';
}
echo '</ul>';
そして、ここに私の言語セレクタークラスがあります:
class AW_Controller_Plugin_LangSelector extends Zend_Controller_Plugin_Abstract {
public function preDispatch(Zend_Controller_Request_Abstract $request) {
$lang = $request->getParam('lang', '');
if ($lang !== 'de' && $lang !== 'en' && $lang !== 'pl')
$request->setParam('lang', 'de');
switch ($request->getParam('lang')) {
case 'de':
$locale = 'de';
break;
case 'en':
$locale = 'en';
break;
case 'pl':
$locale = 'pl';
break;
default :
$locale = 'de';
break;
}
$zl = new Zend_Locale();
$zl->setLocale($locale);
Zend_Registry::set('Zend_Locale', $zl);
$translate = Zend_Registry::get('Zend_Translate');
$translate->setLocale($zl);
}
}
選択ボックスで言語を変更すると、サイトのテキストの言語が変更されますが、ナビゲーション ターゲットは変更されません。ナビゲーションラベルも変更されます。
デフォルト言語の場合: www.example.de/de/controller/action そして、言語を英語に切り替えます -> ナビゲーションの href 属性は古い値のままです (www.example.de/de/controller /action) ただし、www.example.de/en/controller/action が必要です。
私の問題はどこですか?メニューを再レンダリングするのを忘れていませんか?