2010-07-23 12 views
4

J'essaie d'implémenter la pagination dans ma webapp CI. Maintenant, je mets la config pour la pagination dans un fichier de configuration comme ça ...La configuration automatique pour la pagination dans CodeIgniter ne fonctionne pas

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 
$config['base_url'] = "http://example.com/index.php/home/index"; 
$config['num_links'] = "9"; 
$config['per_page'] = "20"; 
$config['total_rows'] = "200"; 

/* End of file pagination.php */ 
/* Location: ./system/application/config/pagination.php */ 

Dans mon contrôleur, je l'ai chargé la bibliothèque

$this->load->library("pagination"); 

Et je l'ai défini le fichier de configuration de paginations pour être autoload dans config/autoload.php

$autoload['config'] = array('pagination'); 

enfin j'ai appelé la méthode pour créer des liens dans mon modèle de vue:

<?php echo $this->pagination->create_links(); ?> 

Ceci n'a créé aucun lien. La configuration est automatiquement chargée. J'ai vérifié en utilisant ...

<?php echo $this->config->item("num_links"); ?> <!-- this dislayed 9 --> 

Que manque-t-il ici? Juste pour le compte rendu, mettre la config à l'intérieur du contrôleur ne fonctionnait pas non plus.

Mise à jour # 1 - J'ai découvert que les paramètres de configuration se chargent correctement, mais ils n'atteignent pas la bibliothèque ou quelque chose comme ça. À l'intérieur de la bibliothèque de pagination - j'ai fait un codage difficile pour découvrir que le paramètre per_page était zéro là-dedans.

Mise à jour # 2 - Je me suis trompé lorsque j'ai dit que mettre la config inline ne fonctionnait pas. Cela fonctionne bien. L'autoload ne fonctionne pas.

Cordialement

Répondre

2

Enfin utilisé ce code pour résoudre mon problème ...

$this->config->load("pagination"); 
$page_limit = $this->config->item("per_page"); 
$config['total_rows'] = $var; // Some variable count 
$this->pagination->initialize($config); 

Cela me permet de définir les éléments de configuration dans un fichier ainsi que d'initialiser les éléments que je veux dans le contrôleur comme dans mon cas, le nombre total. de lignes - récupéré de la base de données.

Cordialement

0

Votre ligne de chargement automatique dans votre fichier de configuration doit être ce

$autoload['libraries'] = array('pagination'); 

Et vous devez avoir cette ligne en vous son contrôleur après votre tableau de configuration, avant d'utiliser create_links(), etc.

$this->pagination->initialize($config); 
+0

+1 si vous avez omis de mentionner que l'OP n'a pas besoin de charge automatique et charger manuellement la classe de pagination – DRL

+0

'autoload $ [ « bibliothèques »] = array (« pagination »),' a gagné ne charge pas automatiquement le fichier de configuration que j'ai créé. Je vais charger automatiquement la bibliothèque AFAIK. – vikmalhotra

+0

Dans les versions plus récentes de CI, la méthode 'initialize()' réinitialise la pagination aux valeurs par défaut et ne fait que chevaucher le tableau '$ config'. Le fichier 'pagination.php' est totalement ignoré dans ce cas. Ça n'a aucun sens pour moi, mais c'est comme ça que ça fonctionne maintenant. – Sparky