微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – SilverStripe $summary_field interupts标签翻译

我在我的DataObject中使用公共函数fieldLabels()来翻译所有字段标签(以及$summary_fields的标签).这适用于所有字段,除了具有从函数返回的值的字段(而不是从数据库提取的值).

摘要字段

static $summary_fields = array(
    'Label' => 'Label',
    'Type' => 'Type',
    'getrequiredLabel' => 'required'
);

FieldLabels

public function fieldLabels($includerelations = true) {
    $labels = parent::fieldLabels(true);

    $labels['Label'] = _t('UserForm.Label', 'Label');
    $labels['Type'] = _t('UserForm.Type', 'Type');
    $labels['required'] = _t('UserForm.required', 'required');

    return $labels;
}

除了required之外,所有字段都通过fieldLabels()整齐地翻译,因为它具有函数自定义值而不是数据.将getrequiredLabel更改为required会修复此问题.

我可以保留记录字段的值getrequiredLabel,并在顶部列中保留已翻译的标签吗?

enter image description here

解决方法:

将$summary_fields getrequiredLabel变量设置为requiredLabel并使用$field_labels设置字段标签.

private static $summary_fields = array(
    'Label',
    'Type',
    'requiredLabel'
);

private static $field_labels = array(
    'requiredLabel' => 'required'
);

然后在fieldLabels中,应使用$labels [‘requiredLabel’]访问requiredLabel列.

public function fieldLabels($includerelations = true) {
    $labels = parent::fieldLabels(true);

    $labels['Label'] = _t('UserForm.Label', 'Label');
    $labels['Type'] = _t('UserForm.Type', 'Type');
    $labels['requiredLabel'] = _t('UserForm.required', 'required');

    return $labels;
}

你也可以在这里使用布尔修饰符尼斯来达到同样的效果.

private static $summary_fields = array(
    'Label',
    'Type',
    'required.Nice'
);

private static $field_labels = array(
    'required.Nice' => 'required'
);

public function fieldLabels($includerelations = true) {
    $labels = parent::fieldLabels(true);

    $labels['Label'] = _t('UserForm.Label', 'Label');
    $labels['Type'] = _t('UserForm.Type', 'Type');
    $labels['required.Nice'] = _t('UserForm.required', 'required');

    return $labels;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐