@Sokolov09

Как формировать запрос с фильтром в rest yii?

Есть контроллер Product

namespace app\controllers;
use yii\rest\ActiveController;
class ProductController extends ActiveController
{
public $modelClass = 'app\models\Product';
}

GET /products получение товаров
GET /product/{id} получение товара

Как сформировать запрос: список товаров пользователя?

В urlmanager создавал правило на обработку своего запроса который будет вызывать мой екшн.
GET /products/user/{id} - проходит но я не знаю как правильно реализовать экшн
  • Вопрос задан
  • 2021 просмотр
Решения вопроса 1
@matperez
В yii\rest\IndexAction есть метод 'prepareDataProvider'. Если его переопределить, можно использовать get параметры в запросе для совершения выборки. Например так:
public function actions()
    {
        return [
            'index' => [
                'class' => IndexAction::className(),
                'modelClass' => $this->modelClass,
                'checkAccess' => [$this, 'checkAccess'],
                'prepareDataProvider' => function ($action) {
                    $model = new Product();
                    $model->load(\Yii::$app->request->queryParams)
                    return $model->search();
                }
            ],
        ];
    }


model->search должен возвращать ActiveDataProvider на основе переданных параметров из запроса.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы