Виртуальный атрибут в afterFind()

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
NikVolkov
Сообщения: 83
Зарегистрирован: 2015.03.24, 22:03

Виртуальный атрибут в afterFind()

Сообщение NikVolkov »

Всем привет!

Получаю ActiveRecord всех записей

Код: Выделить всё

EntityName::find()->all();
и отдаю в JSON формате.
К каждому полю хочу добавить дополнительный атрибут, например "delete_action"
Он должен содержать что-то такое:

Код: Выделить всё

['allow' => false, 'message' => 'Нельзя удалить тип имеющий дочерние элементы']
Для того, чтобы движок на фронтенде блокировал возможность удаления элемента, например.

Добавляю в "Модель"

Код: Выделить всё

public function afterFind()
{
    parent::afterFind();
    $this->delete_action = $this->deleteAction();
}
На выходе атрибута нет. Что делаю не так?
skynin
Сообщения: 400
Зарегистрирован: 2017.12.12, 10:09

Re: Виртуальный атрибут в afterFind()

Сообщение skynin »

Модель считает атрибутами те что в есть базе данных
и те что объявлены в rules (и то, не уверен, что если delete_action объявить там как safe будет толк)

Остальное для модели - просто какие-то поля класса не имеющие никакого отношения к данным.
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.
NikVolkov
Сообщения: 83
Зарегистрирован: 2015.03.24, 22:03

Re: Виртуальный атрибут в afterFind()

Сообщение NikVolkov »

Переопределить

Код: Выделить всё

fields()
- то что нужно, Спасибо! :D
Ответить