/**
  * 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]));
 }
Esempio n. 2
0
 /**
  * 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]);
 }