2017-03-02 1 views
-1

私はsymfony 3.2を使用しています。私はajaxフォームでログインしたいと思います。メッセージは翻訳されない点を除いてすべて正常に動作します。ログインするためにajaxフォームを使ってメッセージを翻訳する

これはこれにあなたの翻訳行を変更してみてください

class AjaxAuthenticationFailureHandler extends DefaultAuthenticationFailureHandler 
{ 
/** 
* @var mixed 
*/ 
private $translator; 

/** 
* @param \Symfony\Component\HttpKernel\HttpKernelInterface $httpKernel 
* @param \Symfony\Component\Security\Http\HttpUtils  $httpUtils 
* @param array            $options 
* @param \Psr\Log\LoggerInterface       $logger 
* @param mixed            $translator 
*/ 
public function __construct(HttpKernelInterface $httpKernel, HttpUtils $httpUtils, array $options, LoggerInterface $logger = null, $translator = null) 
{ 
    parent::__construct($httpKernel, $httpUtils, $options, $logger); 

    $this->translator = $translator; 
} 

/** 
* {@inheritDoc} 
*/ 
public function onAuthenticationFailure(Request $request, AuthenticationException $exception) 
{ 
    if ($request->isXmlHttpRequest()) { 
     return new Response(json_encode(array(
      'has_error' => true, 
      'error'  => $this->translator->trans($exception->getMessage()) 
     ))); 
    } 

    return parent::onAuthenticationFailure($request, $exception); 
} 

答えて

1

AjaxAuthenticationFailureHandlerクラスです:

$this->translator->trans($exception->getMessage(), array(), 'messages') 

その後、すなわちmessages.en.yml言語ごとに、あなたのリソース/翻訳フォルダに変換ファイルを作成します、messages.fr.ymlなど...

あなたの$ exception-> getMessage()は、単純化するために翻訳キーを試して返します。 "error.name.missing"が返され、yml変換ファイルに次のように表示されます。

error.name.missing: 'The name cannot be missing' 
関連する問題