2014-09-09 2 views
0

사용자 프로필 페이지에 사용자의 현재 상태를 표시하고 있습니다. 3 가지 상태가 가능하며 정수로 데이터베이스에 저장됩니다 (1 = 계정 사용, 2 = 계정 사용 안 함 등)번역기 서비스를 사용하여 public static array 내에서 텍스트 번역

정수를 의미있는 텍스트 형식으로 지정하려면

public static $aAllowedStatuses = array(
    StatusModel::STATUS_DISABLED => 'Account disabled', 
    StatusModel::STATUS_ENABLED => 'Account enabled', 
    StatusModel::STATUS_TECHNICAL_PROBLEM => 'Account disabled because of technical problem' 
); 

나는이 텍스트를 번역하고 싶은, 그래서 난 내 나뭇 가지 확장에 통역 서비스를 주입하는

StatusModel::STATUS_DISABLED => 'Account disabled' 

을 변경 시도 : 다음으로 나는 공공 정적 배열의 모든 3 개 가능한 상태를 나열

StatusModel::STATUS_DISABLED => $this->translator->trans('Account disabled') 

하지만 내 IDE (phpStorm)에서이 오류를 받고 있어요 : 표현은 필드 기본값 내가 잘못 뭐하는 거지

가 허용되지 않는 이유는 무엇입니까? 아니면 이것을 할 수있는 더 좋은 방법이 있습니까?

감사합니다.

답변

0

당신은 어떤 코드를 평가할 수 없습니다. 당신이 할 수있는 일

예를 들어 생성자에서 그들을 번역하는 것입니다 : 나는 "내 질문에 대한 대답"로 다른 대답을 확인하지만

public function __construct(Translator $translator) 
{ 
    foreach (self::$allowedStatuses as $key => $message) { 
     self::$allowedStatuses[$key] = $translator->trans($message); 
    } 
} 
+0

예, 좋은 해결책입니다. 그러나 번역을 추출하고 싶으면 (jms/translationbundle을 통해)이 오류를 표시합니다. 스칼라 문자열에서 번역 ID 만 추출 할 수 있지만 "PHPParser_Node_Expr_Variable"이 나타납니다. – mattyh88

+0

질문이 없습니다 ... 필요한 경우 번역을 추출하려면 추출기의 한계에 적응해야합니다. –

0

배열 구성시 표현식을 사용할 수 없습니다.

이처럼, 나중에 그것을 할 수 : PHP의 속성을 정의하면서

$aAllowedStatuses[StatusModel::STATUS_DISABLED] => $this->translator->trans('Account disabled'); 
+0

, 나는 추출물을 사용하기 위해 코드의 회선을 사용 명령 :) – mattyh88

+0

알려 줘서 고마워! –

관련 문제