OctoberCMS. Добавление accessor столбца в Backend List

Чтоб 2 раза не вставать

Введение

Accessor (свойство) — способ доступа к внутреннему состоянию объекта, имитирующему переменную. Обращение к свойству объекта выглядит так же, как и обращение к обычному полю, но, в действительности, реализовано через вызов функции.

Создание accessor'а

Cоздается метод класса модели. Он должен быть с префиксом get и постфиксом Attribute. Через модель к такому методу обращаются как атрибуту в snake-case нотации (без префикса и постфикса).

SomeModel.php

public function getBestIndexationAttribute()
{
    if ($this->is_wos) {
        if (!$this->quartile) return 'Web of Science';
        switch ($this->quartile) {
            case 'Q1':
                return 'Web of Science Q1';
                break;
            case 'Q2':
                return 'Web of Science Q2';
                break;
            case 'Q3':
                return 'Web of Science Q3';
                break;
            case 'Q4':
                return 'Web of Science Q4';
                break;                
            case 'Q5':
                return 'Web of Science Emerging Sources Citation Index';
                break;                
        }
    }

    if ($this->is_scopus) return 'Scopus';
    if ($this->is_risc && $this->is_vak) return 'ВАК + РИНЦ';
    if ($this->is_risc) return 'РИНЦ';
    if ($this->is_vak) return 'ВАК';
}

Соответственно, чтобы получиться значение следует отбросить get и Attribute, привести имя к нижнему регистру и вставить символы подчёркивания. Получится SomeModel->best_indexation.

Добавление accessor'а в Backend List

Предельно просто. Созданный accessor добавляется в yaml файл как обычный столбец.

columns.yaml

# ===================================
#  List Column Definitions
# ===================================

columns:
    ...
    best_indexation: # snake_case
        label: Индекс
        type: text
        sortable: false
        searchable: false
    ...

После этого в Backend List появляется новый столбец.

Другие записи из подборки «OctoberCMS. Backend.»

OctoberCMS. Ошибка RelationController: "Не удалось найти шаблон (partial) ... traits\ViewMaker.php"

В контроллере поведения RelationController при нажатии на кнопке "Cоздание" вылетает ошибка с подобным содержаним

"Не удалось найти шаблон (partial) с именем _comments.htm." on line 91
of ...\modules\system\traits\ViewMaker.php

Похожие записи

Собственные сообщения об ошибках валидации форм OctoberCMS

Во время разработки модели данных OctoberCMS при необходимости, можно использовать собственные сообщения об ошибках валидации полей формы вместо сообщения The :attribute field is required. по-умолчанию. В статье показывается как, достаточно просто, это делается.