Joomla.it Forum
Non solo Joomla... => Sviluppo => : Sory 09 May 2013, 15:59:03
-
Salve sono triste xchè non mi riesce ad aggiungere un filtro in una componente che ho realizzato. E in pratica con published , quindi è presente nel file .xml , nel file default.php ho una cosa cosi:
<select name="filter_regione" class="inputbox" onchange="this.form.submit()">
<option value=""><?php echo JText::_('JOPTION_SELECT_REGIONE');?></option>
<?php echo JHtml::_('select.options', JHtml::_('regione.options','com_immobiliare'),'value', 'text', $this->state->get('filter.regione'),true);?>
</select>
Che sicuramente non va bene , infatti mi da errore "JHtml: :regione non supportato. File non trovato."
Se invece metto:
<select name="filter_regione" class="inputbox" onchange="this.form.submit()">
<option value=""><?php echo JText::_('JOPTION_SELECT_REGIONE');?></option>
<?php echo $this->state->get('filter.regione')?>
</select>
mi viene un filtro uguale a q.sto editor dove scrivo in q.sto momento ma la scelta è povera , :( si ripete l'opzione di default "Aspetto carattete" due volte.
Non capisco ! Chi a un consiglio , per piacere
-
io sono triste perchè non ho capito nulla di ciò che hai scritto.
Quale guida hai seguito e a che punto non riesci?
-
Ciao M_W_C , in tanto grazie per le belle parole!
Siccome è la prima volte che mi rivolgo ad un forum , e poi mi spiego molto male , q.sto è il mio p.to debole , xchè nn sono italiana di origine.
Allora ho fatto una componente ,voglio semplicemente aggiungere un filtro come q.lo di published solo che si chiama regione con tutte le regioni di italia. Quindi quando io vado a selezionare Abruzzo devo avere naturalamente Abruzzo. OK?.Non so come fare q.sto filtro per la mia componente. Nel libro di Joomla 2.5 di Di Mark Dexter non ho trovato niente.Ora ho cercato su internet , nulla. Grazie ciao
-
Ciao Sory, non è tanto la lingua forse quanto il concetto che non è chiaro: ricorda sempre che chi sta dall'altra parte del forum non ha il tuo codice davanti ed ha difficoltà a capire cosa frulla nella tua testa ;)
Benvenuta sul forum comunque!
-
Nel libro di Joomla 2.5 di Di Mark Dexter non ho trovato niente
-----------------------------------------------------------------------------------
Se devi fare delle select concatenate (chained) devi costruire due fields custom con le due select.
una delle due deve fare una richiesta ajax la cui risposta valorizza la seconda select
Dexter usa sempre il suo weblink... prova a guardare lo stesso componente nella 3.0 quando nel controller usa saveOrderAjax()... in pratica devi fare + o - la stessa cosa
se devi fare dei filtri sui risultati:
http://docs.joomla.org/How_to_add_custom_filters_to_component_admin
-
Salve M_W_C, penso proprio di prendere in considerazione il tuo consiglio. Grazie . ::)
-
Ciao M_W_C , ascolta ho iniziato a fare un filtro semplice, in pratica mi deve selezionare una regione da 18 regioni che ha l'Italia. Ho fatto un fields custom , chiamato regione.php.
<?php
defined('_JEXEC') or
die;
jimport('joomla.html.html');
jimport('joomla.form.formfield');
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
class
JFormFieldImmobiliareRegione extends JFormFieldList
{
protected $type =
'ImmobiliareRegione';
public function
getOptions()
{
$options = array();
$db = JFactory::getDbo();
$query =
$db->getQuery(true);
$query->select('a.id As value, a.regione As text');
$query->from('#__indice AS
a');
$query->order('a.regione');
$query->where('published = 1');
// Get the options.
$db->setQuery($query);
$options = $db->loadObjectList();
// Check for a database
error.
if
($db->getErrorNum()) {
JError::raiseWarning(500,
$db->getErrorMsg());
}
return
$options;
}
}
-----------------------------------------------------------------------------------------------------------------------------
Nella
cartella views , file Immobili.php ho agiunto il filtro e ho modificato il
metodo _costruct() in q.sto modo:
class ImmobiliareModelImmobili extends
JModelList
{
protected $searchInFields =
array('text','a.regione');
public
function __construct($config = array())
{
$config['filter_fields']=array_merge($this->searchInFields,array('a.regione','a.id','cod'));
parent::__construct($config);
}
function populateState($ordering = 'a.cod', $direction =
'asc')
{
//
Initialise variables.
$app =
JFactory::getApplication('administrator');
$value
= $app->getUserStateFromRequest($this->context.'.filter.search',
'filter_search');
$this->setState('filter.search',
$value);
$value
= $app->getUserStateFromRequest($this->context.'.filter.access',
'filter_access');
$this->setState('filter.access',
$value);
$value
= $app->getUserStateFromRequest($this->context.'.filter.published',
'filter_published');
$this->setState('filter.published',
$value);
$regione =
$this->getUserStateFromRequest($this->context.'.filter.regione',
'filter_regione', '', 'string');
$this->setState('filter.regione',
$regione);
parent::populateState($ordering,
$direction);
}
protected
function
getListQuery()[/b]
{
$db
= $this->getDbo();
$query =
$db->getQuery(true);
$query->select(
$this->getState(
'list.select',
'a.id,
a.cod,a.regione,......'));
$query->from('#__indice
AS a');
//
Filter by search in title
$search =
$this->getState('filter.search');
if
(!empty($search)) {
if
(stripos($search, 'id:') === 0)
{
$query->where('a.id
= '.(int) substr($search,
3));
} else
{
$search
= $db->Quote('%'.$db->getEscaped($search,
true).'%');
$query->where('(a.cod
LIKE '.$search.' OR a.alias LIKE
'.$search.')');
}
}
if
($access = $this->getState('filter.access'))
{
$query->where('a.access
= ' . (int)
$access);
}
//
Filter regione
$regione=
$db->escape($this->getState('filter.regione'));
if
(!empty($regione)) {
$query->where('a.regione='.
$regione);
}
//
Filter by published state
$published =
$this->getState('filter.published');
if
(is_numeric($published))
{
$query->where('a.published
= ' . (int) $published);
} else if
($published === '')
{
$query->where('(a.published
= 0 OR a.published =
1)');
}
//Add
the list ordering clause.
$orderCol =
$this->state->get('list.ordering');
$orderDirn
=
$this->state->get('list.direction');
if
($orderCol == 'a.ordering' || $orderCol == 'id')
{
$orderCol = 'cod
'.$orderDirn.',
a.ordering';
}
$query->order($db->getEscaped($orderCol.'
'.$orderDirn));
return
$query;
}
function
getStoreId($id =
'')
{
// Compile the
store id.
$id .=
':'.$this->getState('filter.search');
$id
.=
':'.$this->getState('filter.access');
$id
.=
':'.$this->getState('filter.published');
$id
.=
':'.$this->getState('filter.regione');
return
parent::getStoreId($id);
}
}
----------------------------------------------------------
Nel
tmpl / default.php ho messo il filtro.regione:
<select
name="filter_regione" class="inputbox"
onchange="this.form.submit()">
<option value=""><?php echo
JText::_('JOPTION_SELECT_REGIONE');?></option>
<?php echo
JHtml::_('select.options', $regioneOptions, 'value', 'text',
$this->state->get('filter.regione'));?>
</select>
Ora io a q.sto p.to ho il mio filtro con le regioni ma non mi seleziona nulla.Quando vado a seleziona una regione, mi dovrebbe dare solo immobili da quella regione, invece spariscono tutti.Dove ho sbagliato?Cosa non capisco?e pensa volevo fare delle select concatenate... :-\ :-\
-
Ciao
Cortesemente ai fini della comprensione quando devi postare codice utilizza il tag # ed anche evita di scrivere in stile sms, qui non ci sono limiti ai caratteri. :) .
Ah forse ti sei dimenticata di 2 regioni, ne sono 20 ma forse non sono importanti nella tua ricerca. :)
-
Giusto, tomtomeight. Grazie, sei un amico! :o
-
http://www.milano-web-siti.it/risorse-webmaster/5-joomla-aggiungere-filtri-alle-liste
-
Grazie tanto . Sono riuscita ad mettere i filtri ora devo ragionare per farli funzionare. Ciao M_V_C