Добавить поле Dataprovider

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

Добавить поле Dataprovider

Сообщение garytopor »

Доброго дня

Требуется добавить поле, где присваиваются латинские буквы в Dataprovider по индексу. То есть записи каждый раз могут получать разные буквы в зависимости от параметров фильтра. Как то в SearchModel надо это реализовать.

Идеи?
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: Добавить поле Dataprovider

Сообщение Alexum »

Более подробно опишете что и при каких действиях с фильтрами должно происходить. Лучше с примером.
garytopor
Сообщения: 113
Зарегистрирован: 2014.07.21, 22:23

Re: Добавить поле Dataprovider

Сообщение garytopor »

Alexum писал(а): 2018.06.19, 09:54 Более подробно опишете что и при каких действиях с фильтрами должно происходить. Лучше с примером.
Решил, по этому сразу напишу ответ:

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

$alphabet = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
        $models=$dataProvider->getModels();
        foreach ($models as $key => $m) {
            $m->alpfabetic = $alphabet[$key];
        }
Yeah boy 8-)
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: Добавить поле Dataprovider

Сообщение Alexum »

Вы же опытный программист, для вас это подходящее решение?
1) Что будет, если записей вдруг окажется больше чем букв алфавита?
2) Преобразованиями base26 не пользовались, подобно тому как Excel преобразует?
3) Если скажем скармливать провайдер в GridView, то можно создать класс колонки для GridView, где получать индекс с учётом пагинации (как это делается можно посмотреть в классе SerialColumn) и через base26 преобразовывать в буквы. Таким образом провайдер и тем более данные из него вообще не потребуется трогать.
garytopor
Сообщения: 113
Зарегистрирован: 2014.07.21, 22:23

Re: Добавить поле Dataprovider

Сообщение garytopor »

Alexum писал(а): 2018.06.19, 16:03 Вы же опытный программист, для вас это подходящее решение?
1) Что будет, если записей вдруг окажется больше чем букв алфавита?
2) Преобразованиями base26 не пользовались, подобно тому как Excel преобразует?
3) Если скажем скармливать провайдер в GridView, то можно создать класс колонки для GridView, где получать индекс с учётом пагинации (как это делается можно посмотреть в классе SerialColumn) и через base26 преобразовывать в буквы. Таким образом провайдер и тем более данные из него вообще не потребуется трогать.
1) Лимит пагинации - 20 записей на страницу
2) base26 можно использовать, есть ли смысл?
3) Дело в том что я скармливаю ListView и Google maps через ажакс в формате XML, поэтому надо было в модели прописать
Ответить