CakePHP: paginazione con condizioni su campi tradotti
ATTENZIONE!
Il post ha più di 2 anni e le informazioni contenute
potrebbero essere obsolete (ad esempio a causa di un
aggiornamento di versione rispetto agli elementi descritti
o links modificati da siti esterni).
Per eseguire la paginazione in CakePHP utilizzando delle condizioni sui campi tradotti (Translate Behavior) è necessario aggiungere alcune funzioni nell'app_model (testato nella versione 1.3):
var $usePaginateMethod = 'standard';
function setPaginate($method=''){
if (empty($method)){
$this->usePaginateMethod = 'standard';
}else{
$this->usePaginateMethod = $method;
}
}
function paginateCount($conditions, $recursive, $extra){
switch ($this->usePaginateMethod) {
case 'standard':
return $this->standardPaginateCount($conditions, $recursive, $extra);
break;
case 'custom':
return $this->customPaginateCount($conditions, $recursive, $extra);
break;
}
}
function standardPaginateCount($conditions, $recursive, $extra){
$results = $this->find('count', compact('conditions', 'recursive', 'extra'));
return $results;
}
function customPaginateCount($conditions, $recursive, $extra){
$results = $this->find('all', compact('conditions', 'recursive', 'extra'));
$count = count($results);
return $count;
}
All'interno del controller si deve poi impostare il metodo di paginazione scegliendo tra 'custom' e 'standard'
//specifica il tipo di paginazione da utilizzare
$this->News->setPaginate('custom');
$this->data = $this->paginate('News',$conditions = array());
Per ritornare alla paginazione standard:
//se necessario ritorna al metodo standard
$this->News->setPaginate('standard');
fonte: http://groups.google.com
Commenti