/
v.bolshakov
/
AIEcosystem-Testing
Обзор
Документация
Войти
/
v.bolshakov
/
AIEcosystem-Testing
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
backend/controllers/Select2Controller.php
93 строки
3 KB
Developer
Initial commit
03 авг 2026, 17:43
03 авг 2026, 17:43
7433917
Код
Авторство
О чём код?
<?php namespace backend\controllers; use common\controllers\base\DataController; use common\models\base\Model; use common\traits\Select2Trait; use Yii; use yii\base\InvalidConfigException; use yii\web\BadRequestHttpException; use yii\web\NotFoundHttpException; /** * Контроллер для вывода данных из списка для Select2 * * @author Dmitry E. Semenov <sde.tomsk@gmail.com> * @copyright Self (c) 2020 */ class Select2Controller extends DataController { use Select2Trait; /** * Вывод списка для Select2 * * @param int $use_status использовать статус для выбора данных или нет * @param mixed $id_list Белвый список значений для выборки данных * @param mixed $ex_list Черный список значений для выборки данных * @param int $begin Параметр фильтрации данных - TRUE только к начала, FALSE - любое вхождение * @param int $split Разбивать поиск по словам и столбцам или нет * @param int $strong Признак, означаем о том что искать все слома разом или каждое слово * @throws BadRequestHttpException * @throws NotFoundHttpException * @throws InvalidConfigException */ public function actionList() { $class = Yii::$app->request->get('class'); $use_status = Yii::$app->request->getDefault('use_status', 1); $id_list = Yii::$app->request->getDefault('id_list', null); $ex_list = Yii::$app->request->getDefault('ex_list', null); $begin = Yii::$app->request->getDefault('begin', 0); $split = Yii::$app->request->getDefault('split', 1); $strong = Yii::$app->request->getDefault('strong', 0); if (!$class) { throw new BadRequestHttpException('Не указан обязательный параметр'); } $model = Model::factory($class); $className = $model::className(); $this->model = $model; $this->query = $className::find(); if ($use_status) { $this->query->notDeleted(); } $this->query ->alias($this->query->alias); if ($id_list) { // белый список $ids_str = Model::classNameFromHash($id_list); if ($ids = explode(',', $ids_str) and count($ids) > 0) { $this->query ->andWhere(['in', $this->query->alias . '.id', $ids]); } } if ($ex_list) { // черный список $ids_str = Model::classNameFromHash($ex_list); if ($ids = explode(',', $ids_str) and count($ids) > 0) { $this->query ->andWhere(['not in', $this->query->alias . '.id', $ids]); } } if ($fields = $this->model->getParentModel()) { foreach ($fields as $field_name => $model) { if ($parent_id = Yii::$app->request->get($field_name)) { $this->query ->prepareParentModel($field_name, $parent_id, $model); } } } $this->filter_from_begin = (boolean)$begin; $this->split_filter = (boolean)$split; $this->strong_filter = (boolean)$strong; } }