Несколько полей в nameFrom для фильтра в backend в OctoberCMS

Стандартно, в фильтре можно использовать только один атрибут в nameFrom, но это плохо применимо когда нужно использовать два или более атрибута (например для модели User плагина Rainlab хорошо бы в фильтре выводить имя и фамилию).

Покажу на примере.

У нас есть своя модель, которая связана с моделью User плагина Rainlab. И мы решили в админке на списке всех наших записей сделать сортировку по пользователю.

Первым делом добавляем в config_filter.yaml:

config_filter.yaml

user_id:
    label: User
    modelClass: Rainlab\User\Models\User
    conditions: user_id in (:filtered)
    nameFrom: fullName

Можно заметить, что в nameFrom мы используем несуществующий атрибут для модели User. Чтобы он существовал, нужно добавить в модель User свой метод. В файле Plugin.php нашего плагина пишем:

Plugin.php

public function boot()
{
    User::extend(function($model) {
        $model->addDynamicMethod('getFullNameAttribute', function($value) use ($model) {
            return $model->name . ' ' . $model->surname . ' (' . $model->email . ')';
        });
    });
}

В итоге получаем красоту:

Несколько полей в nameFrom для фильтра в backend в OctoberCMS
Несколько полей в nameFrom для фильтра в backend в OctoberCMS

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *