Posto un po' di codice ed ho scoperto che il problema è dovuto ai filtri di ricerca, nel senso che la paginazione funziona se disabilito i due filtri, campo di testo libero e "categoria/area".
MODEL
function _buildWhere(){
$app =& JFactory::getApplication();
$db =& JFactory::getDBO();
$search = JString::strtolower($app->getUserStateFromRequest('com_miocom.sectors.search' ,'search', '', 'string'));
$area_search = JString::strtolower($app->getUserStateFromRequest('com_miocom.sectors.area_search' ,'area_search', '', 'int'));
$where = array();
if ($search)
$where[] = ' LOWER (name) LIKE '.$db->Quote( '%'.$db->getEscaped( $search, true ).'%', false );
if($area_search){
$where[] = ' area_id = '.$area_search;}
if (count($where)) $where = ' AND '.implode(' AND ', $where);
else $where = '';
$this->_where .= $where;
return $where;
}
qui se uso la paginazione senza nessun filtro, la query diventa:
SELECT * FROM #__miocom_sectors WHERE area_id = ORDER BY `name` DESC
viene passato il filtro if($area_search){ anche se la stringa è vuota
Se invece inserisco una ricerca x testo libero ho:
SELECT * FROM #__miocom_sectors WHERE LOWER (name) LIKE '%zamba%' AND area_id = ORDER BY `name` DESC
sulla view ho:
$app =& JFactory::getApplication();
$search = $app->getUserStateFromRequest("com_miocom.sectors.search",'search','','string');
$search = JString::strtolower( $search );
$lists['search']= $search;
$noopt[] = JHTML::_('select.option', '0', ' - '.JText::_('Select').' - ');
$areas = array_merge($noopt, imiocomHelper::getAreasForSearch());
$area_search = $app->getUserStateFromRequest('com_miocom.sectors.area_search', 'area_search','', 'integer');
$available_areas = JHTML::_('select.genericlist', $areas, 'area_search', 'class="inputbox" onchange="document.adminForm.submit();"', 'value', 'text', $area_search);
$lists['available_areas']= $available_areas;
nel template:
<td nowrap="nowrap">
<?php echo JText::_( 'Filter' ); ?>:
<input type="text" name="search" id="search" value="<?php echo $this->lists['search'];?>" class="text_area" onchange="document.adminForm.submit();" />
<button onclick="this.form.submit();"><?php echo JText::_( 'Go' ); ?></button>
<button onclick="document.getElementById('search').value='';this.form.getElementById('filter_state').value='';this.form.submit();"><?php echo JText::_( 'Reset' ); ?></button>
</td>
<td nowrap="nowrap" style="text-align:right;">
<?php echo JText::_('Area').' '.$this->lists['available_areas'];?>
</td>
Grazie ancora
PS: I settori si trovano all'interno delle aree, quindi posso filtrare i settori x mostrare quelli di una singola area