Symfony2 URL匹配器在转换函数期间匹配控制器时抛出ResourceNotFoundError

时间:2013-12-06 00:57:58

标签: php symfony locale translate

我遇到的错误只发生在制作上。我有一个表单,使用单选按钮来更改我的应用程序的语言翻译。当用户选择“en”时,应用程序将更改为英语等。

在制作时,切换单选按钮会引发错误:

Uncaught PHP Exception (ResourceNotFoundException) ... at ... app/cache/prod/appProdUrlMatcher.php:129

该行只抛出ResourceNotFoundException,但是我正在查看这行:

if (preg_match('#^/(?P<_locale>[^/]++)/translate$#s', $pathinfo, $matches)) {
    return $this->mergeDefaults(array_replace($matches, array('_route' => 'translate_language')), array ( '_controller' => 'Path\\ToMy\\Controller\\TranslateController::translateAction',));
}

代码在preg_match内部工作,但在返回时失败。我所有的其他路线都有效!

以下是我的translateAction代码:

public function translateAction(Request $request)
{
 $form = $this->createTranslateForm();
 $form->handleRequest($request);

 if ($request->getMethod() == 'POST') {
    $data = $request->request->get('translate-form');
    $language = $data['language'];

    $this->get('session')->set('_locale', $language);

    $referRoute = $this->getRefererRoute();

    $url = $this->get('router')->generate($referRoute, array('_locale' => $language));

    return $this->redirect($url);
 }
}

有人能指出我正确的方向吗?

0 个答案:

没有答案