These are chat archives for php-ua/yii

24th
Feb 2017
AlikDex
@AlikDex
Feb 24 2017 10:10
Парни вопрос такой. Вот вы отошли от всяких дата провайдеров, допустим. И надо в шаблон отправлять набор готовых данных. Как в таком случае писать логику контроллера? Т.е. сортировки все делать в модели? Пагинашки? Как их тогда забирать с модели? Или прямо в контроллере это все делать?
    public function actionCategory($slug, $page = 1, $id = 0)
    {
        $session = Yii::$app->get('session');
        $request = Yii::$app->get('request');
        $crawlerDetector = Yii::$app->get('crawlerDetect');

        $session->open();

        if ($session->isActive) {
            $session['last_location'] = [
                'controller' => $this->id,
                'action' => $this->action->id,
                'slug' => $slug,
            ];
        }

        $searchModel = new VideosSearch();
        $videosQuery = $searchModel->getFromCategory([$searchModel->formName() => $request->getQueryParams()]);

        $items_per_page = (int) Yii::$app->params['videos_per_page'];
        $pagination = new Pagination([
            'totalCount' => $videosQuery->count(),
            'defaultPageSize' => $items_per_page,
            'route' => $this->id . '/' . $this->action->id,
            'forcePageParam' => false,
        ]);

            // Постраничная выборка и сортировка
        $offset = ($page - 1 ) * $items_per_page;

        $videos = $videosQuery
            ->limit($items_per_page)
            ->offset($offset)
            ->orderBy(['ctr' => SORT_DESC])
            ->indexBy('image_id')
            ->all();

        if (!$crawlerDetector->isCrawler()) {
            $ids = array_keys($videos);

            $category = VideosCategories::find()
                ->where(['slug' => $slug])
                ->one();

            VideosStats::updateAllCounters(['shows' => 1], ['image_id' => $ids, 'category_id' => $category->category_id]);

            $session['prev_location'] = [
                'controller' => $this->id,
                'action' => $this->action->id,
                'slug' => $slug,
            ];
        }

        return $this->render('category_list', [
            'videos' => $videos,
            'page' => $page,
            'pagination' => $pagination,
        ]);
    }
дабы не ходить вокруг да около, объясню ситуацию )
на примере
вот это все говно куда девать )