web-dev-qa-db-fra.com

Comment définir la limite get ('Items')?

Par défaut, populateState semble limiter l'appel à la fonction get('Items') de tout modèle à 20 éléments.

Comment cela peut-il être annulé - en ré-écrivant populateState? En écrivant une fonction séparée dans le modèle? Je suis allé pour la deuxième option ...

public function getAll(){
    return $this->_getList($this->getListQuery());
}

ce qui fonctionne, mais je pense qu'il y a une façon plus Joomla-ish de le faire - je ne peux pas le trouver.

5
codinghands

Pour répondre à la question dans le titre concernant le "réglage" de la limite, ceci est effectué dans la configuration globale de Joomla: "Limite de liste par défaut".

Pour remplacer, les composants Joomla semblent généralement utiliser cela dans le modèle: Using $limit = 0 montre tous les articles

protected function populateState($ordering = null, $direction = null)
{
    // set limit
    $this->setState('list.limit', $limit);
    // set start (eg. what record to begin pagination at)
    $this->setState('list.start', $value);
}
5
GDP

Comme d'autres l'ont déjà dit - mettez ceci dans la fonction populateState du modèle

$this->setState('list.limit', $limit); #limit=0 removes limit
$this->setState('list.start', $start);

Mais vous devez vous assurer que ces lignes sont APRES

parent::populateState($order, $dir);

ou la classe parente remplacera vos valeurs

4
mhorne

Essayez ceci aussi

protected function populateState($ordering = null, $direction = null)
    {
    // Load the list state.
    $this->setState('list.start', 0);
    $this->setState('list.limit', 10);
    }
1
Jextn