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 сделать простейшую переадресацию с одной страницы на другую?

Создаём страницу (Page), задаем URL и в секции код добавляем обработчик на хук жизненного цикла страницы. В данном случае это onStart, которая выполняется перед началом загрузки страницы.

function onStart()
{
    return Redirect::to('http://tyapk.ru');
}

FrontEnd контроллеры в OctoberCMS

В OctoberCMS нет концепции frontEnd контроллеров. Иными словами, идеология этой CMS не подразумевает возможность просто создать некий ProductController с несколькими action для обслуживания маршрутов Route::method('product/{id}', 'ProductController@show'). Вместо этого предлагается использовать компоненты плагинов. Именно компоненты являются формой frontEnd контроллеров.