私はZend Framework 3を初めて使用していて、ルートを翻訳しようとしていましたが、部分的に成功しました。メインルートを翻訳し、必要な場所にリダイレクトできます子ルートは翻訳が機能しますが、リダイレクトは機能しません。私のコードは以下の通りです。Zend frameworkが翻訳された子ルートをルーティングできません
module.config.php
'router' => [
'router_class' => TranslatorAwareTreeRouteStack::class,
'routes' => [
'setting' => [
'type' => Segment::class,
'options' => [
'route' => '/{locale}/{setting}',
'defaults' => [
'locale' => 'de',
'controller' => Controller\SettingController::class,
'action' => 'index',
],
],
'may_terminate'=>true,
'child_routes' =>[
'add' =>[
'type' =>'Segment',
'options' =>[
'route' =>'/{add}',
'defaults'=> [
'controller' => Controller\SettingController::class,
'action' => 'add',
],
],
],
],
],
],
],
Module.php
public function onBootstrap(MvcEvent $e)
{
$eventManager = $e->getApplication()->getEventManager();
$moduleRouteListener = new ModuleRouteListener();
$moduleRouteListener->attach($eventManager);
$language_session = new Container('language');
if(!$language_session->offsetExists('lang')){
$language = 'de_DE';
} else{
$language = $language_session->lang.'_'.strtoupper($language_session->lang);
}
$translator = $e->getApplication()->getServiceManager()->get('translator');
$translator->setLocale($language);
$translator->addTranslationFile('phparray', __DIR__.'/language/'.$language.'.php', 'default',$language);
$app = $e->getTarget();
$app->getEventManager()->attach('route', array($this, 'onPreRoute'), 100);
}
public function onPreRoute($e)
{
$app = $e->getTarget();
$serviceManager = $app->getServiceManager();
$serviceManager->get('router')->setTranslator($serviceManager->get('translator'));
}
そして、私の言語ファイルde_De.php
return array(
'locale' => 'de',
'setting' => 'Einstellung',
'add' => 'hinzufügen',
);
私の上記のコードごとのように私はリダイレクトすることができています設定コントローラにルート "language.devgrafioffshore.com/de/Einstellung "アクションを追加するために私をリダイレクトしますが、私は
要求されたURL
を取得する必要がありますどの language.devgrafioffshore.com/de/Einstellung/hinzufügenにリダイレクトすることができでもないがルーティングすることで一致させることができませんでした。
ありがとうございます。 さようなら!
ドキュメントによると、私たちはSO(いくつかのコードはまったく同じです)で何が見つかりましたか、それはOKと思われます。あなたはこの質問を投稿してから何が間違っていたのか分かりましたか? –
@AlFonceはい私は "hinzufügen"は動作しませんが、 "hinzufugen"はうまくいきました。あなたがURL変換を解決するより良い方法を見つけたら私に教えてください。ありがとう!! – khukuri