【发布时间】:2016-12-02 07:02:54
【问题描述】:
我是 Zend 框架 3 的新手,正在尝试翻译路线,但我已部分成功。我能够翻译主路线并将其重定向到所需位置,但对于子路线,翻译有效,但重定向不起作用吨。你能帮帮我吗,我的代码在下面。
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',
],
],
],
],
],
],
],
模块.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”重定向到设置控制器
但无法重定向到 language.devgrafioffshore.com/de/Einstellung/hinzufügen 这应该重定向我添加操作,但我明白了
请求的 URL 无法通过路由匹配。
提前谢谢你。 再见!
【问题讨论】:
-
根据文档和我们可以在 SO 上找到的内容(有些代码完全相同),看起来还可以。发布此问题后,您是否发现问题所在?
-
@AlFonce 是的,我发现“hinzufügen”不起作用但“hinzufugen”起作用的一件事,如果您找到了解决网址翻译的更好方法,请告诉我。谢谢!!
标签: php zend-framework2 zend-route zend-translate zend-framework3