我在用户个人资料页面上显示用户的当前状态。 有3种可能的状态,并以数字形式保存在数据库中(1 =启用帐户,2 =帐户禁用等...)
要将整数格式化为有意义的文本,我创建了一个Twig扩展,在其中列出了公共静态数组中的所有3种可能的状态,如下所示:
public static $aAllowedStatuses = array(
StatusModel::STATUS_DISABLED => 'Account disabled',
StatusModel::STATUS_ENABLED => 'Account enabled',
StatusModel::STATUS_TECHNICAL_PROBLEM => 'Account disabled because of technical problem'
);
我想翻译这些文本,所以我将翻译服务注入了我的twig扩展并尝试更改
StatusModel::STATUS_DISABLED => 'Account disabled'
到
StatusModel::STATUS_DISABLED => $this->translator->trans('Account disabled')
但我在我的IDE(phpStorm)中收到此错误:不允许表达式作为字段默认值
我做错了什么?或者有更好的方法吗?
感谢。
答案 0 :(得分:0)
您无法在数组构造中使用表达式。
之后你可以这样做:
$aAllowedStatuses[StatusModel::STATUS_DISABLED] => $this->translator->trans('Account disabled');
答案 1 :(得分:0)
在PHP中定义属性时,无法评估任何代码。
您可以做的是在构造函数中翻译它们,例如:
public function __construct(Translator $translator)
{
foreach (self::$allowedStatuses as $key => $message) {
self::$allowedStatuses[$key] = $translator->trans($message);
}
}