Bonsoir à vous,

Depuis quelques heures je rencontre un petit soucis. Je travaille actuellement sur un projet et j'ai un soucis au niveau de mes routes. Alors certainement que mon code est mal organisé, mais j'essaye de gagner en simplicité en réalité.

J'ai mes routes définies comme ceci :

//  Articlesaround
$route['articles/'] = 'articles/index'
$route['articles/stock']                =    'articles/stock';
$route['articles/vendus']           =   'articles/sold';
$route['articles/stock/(.+)']       =   'articles/stock/$1';
$route['articles/vendus/(.+)']      =   'articles/sold/$1';
$route['articles/ajouter']          =   'articles/add_article';
$route['articles/editer/([1-9]+)']  =   'articles/edit_article/$1';
$route['articles/voir/(.+)']        =   'articles/view/$1';
$route['articles/(.+)']             =   'articles/index/$1';

Mon soucis est pour intégrer la pagination à tout ceci.

En réalité mon controller réalise la même fonction pour chaque action articles/, articles/stock, articles/vendus articles/(.+) etc (hormis ajouter et éditer). Le soucis c'est que si je raoute une pagination à articles/ il va aller chercher articles/(.+) et idem pour les autres pages.

Alors ma question est, comment je pourrais faire pour utiliser la pagination simplement en conservant mon architecture ? Ou bien comment améliorer mes routes ?

PS : Le forum CodeIgniter n'existant plus, j'ai posté dans la section PHP :/

Merci à vous :)

2 réponses


Hello,

Dans un service de routing, la pagination n'affecte en théorie pas le routing car elle passe par un paramètre GET, le plus souvent' nommé page'.

Exemple : articles?page=32
Exemple sur ce site : http://www.grafikart.fr/tutoriels?page=4

Dans un service de routing plus avancé, tu peux spécifier des paramètres GET qui doivent etre présents pour accéder à une ressource.

NB : dans la cas de la pagination ne pas oublier la meta canonical, sinon duplicate content pour Google le plus souvent

Oui mais là mon soucis (et j'aurais du le préciser) c'est de tenter d'utiliser la pagination native de codeigniter :/ Comme ceci :

//  Configuration de la pagination
        $config['base_url'] = $base_url;
        $config['per_page'] = 2;
        $config['num_links'] = 2;
        $config['reuse_query_string'] = FALSE;

        //  On récupère la liste des articles
        $articles = $this->articles_model->get_articles($family, NULL, $type, NULL, $this->uri->segment($this->uri->total_segments()), $config['per_page']);

        $config['total_rows'] = count($articles);
        $config['use_page_numbers'] = TRUE;

        //  On initialise la pagination
        $this->pagination->initialize($config);

        $this->data = array_merge($this->data, [
            'page_title'        =>  $title,
            'navigation'        =>  $this->page_navigation($title),
            'page_flash'        =>  $this->page_flash(),
            'articles'          =>  $articles,
            'pagination'        =>  $this->pagination->create_links(),
        ]);

        $this->twig->display('articles_index.twig', $this->data);

Le tout parsé par Twig :/