Autre petit sujet que je soumet à la communauté !

Y a t'il une façon élégente d'utiliser les paramètres GET de mon url pour réaliser un filtrage sur ma requête ?

J'ai appliqué des conditions dans tous les sens, et je ne suis pas forcément très fier de moi ! (le but étant de ne pas prendre en compte les autres paramètres du type 'sort', 'order' qui peuvent également apparaitre à cause du Paginate)

    $query = $this->Articles->find('all');
    $query->contain(array('Choixcategories','Choixprix','Choixstyles'));

    $params = $this->request->getQueryParams();
    // On supprime les critères nuls :
    $params=array_filter($params);
    $conditions= array();

    if (isset($params['choixcategorie_id'])) {
      $conditions['choixcategorie_id']=$params['choixcategorie_id'];
    }
    if (isset($params['choixstyle_id'])) {
      $conditions['choixstyle_id']=$params['choixstyle_id'];
    }
    if (isset($params['choixprix_id'])) {
      $conditions['choixprix_id']=$params['choixprix_id'];
    }
    if ($conditions != array()) {
      $conditions = array('AND'=>$conditions);
      $query->where($conditions);
    }

Merci !!

1 réponse


Tu peux toujours faire un Component pour tout mettre dans un seul endroit