/** * Traitement des demandes de tri / sur les colonnes : on enregistre en session le critère de tri demandé. * * @param string $orderBy Nom de la colonne sur laquelle on demande un tri. Celui-ci boucle sur 3 états : asc/desc/n-a */ public function run($orderBy) { ListSorter::updateSession($orderBy, $this->sessionKeyForSortClause); $currentPage = Yii::$app->session->get($this->sessionKeyForPageClause, 1); $this->controller->redirect(Url::to([$this->redirectToUrl, 'page' => $currentPage])); }
/** * Affichage de la liste des objets, avec ou sans filtre selon le contenu de la session * (frontend) * * @param int $page Numéro de la page courante (commence à 1) * @return mixed */ public function actionDisplaySearchResults($page) { // Récupération d'une liste éventuellement filtrée selon les critères du moteur de recherche $searchModel = new WebNewsSearch(); $advancedSearchFilters = $searchModel->retrieveFiltersFromSession(); $dataProvider = $searchModel->search($advancedSearchFilters); // Détermination de l'ordre de tri $sortClausesSessionKey = WebNews::class . '.display-search-results.sort'; $dataProvider->query = ListSorter::updateQuery($dataProvider->query, $sortClausesSessionKey); Yii::$app->session->set(WebNews::class . '.index.page', $page); $dataProvider->pagination->page = --$page; /** @var HCms $module */ $module = $this->module; if (isset($module->frontendLayout)) { $this->layout = $module->frontendLayout; } /** @noinspection PhpUndefinedMethodInspection */ return $this->render('displaySearchResults', ['searchModel' => $searchModel, 'dataProvider' => $dataProvider, 'tags' => ArrayHelper::map(WebTag::find()->byLanguageCode(h::getIso639Code())->orderByLabel()->all(), 'id', 'label'), 'sortClausesSessionKey' => $sortClausesSessionKey]); }