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 появляется новый столбец.