SilverStripe $ summary_field intercepts broadcast shortcuts

I use public function fieldLabels()in my DataObject to translate all field labels (as well as labels for $summary_fields). This works fine for all fields except those that have a value returned by the function (and not a value retrieved from the database).

Pivot Fields

static $summary_fields = array(
    'Label' => 'Label',
    'Type' => 'Type',
    'getRequiredLabel' => 'Required'
);

Field labels

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;
}

All fields are neatly translated through fieldLabels(), with the exception of Required , because it has a custom value from a function, not from data. Changing getRequiredLabel to Required fixes this.

In any case, can I save the getRequiredLabel value for the record fields and have the translated label in the top column?

enter image description here

+4
1

$summary_fields getRequiredLabel RequiredLabel $field_labels, .

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

private static $field_labels = array(
    'RequiredLabel' => 'Required'
);

fieldLabels RequiredLabel $labels['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;
}

Boolean Nice .

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;
}
+4

Source: https://habr.com/ru/post/1649658/


All Articles