it-swarm.dev

Imposta il valore predefinito per un filtro personalizzato

Stiamo sviluppando un componente personalizzato in joomla 3.X. Abbiamo una vista elenco e aggiunto alcuni filtri personalizzati nella parte superiore dell'elenco. Il nostro problema è che ci saranno troppi risultati se non viene applicato alcun filtro. Ci chiediamo come sia possibile impostare un valore predefinito per il filtro quando le pagine vengono caricate per la prima volta.

Lo abbiamo provato nel costruttore del modello o nel metodo populatestate, ma senza successo.

$app = JFactory::getAplication();
 $from_date = $app ->getUserStateFromRequest();

 $date = date('Y-m-d H:i:s');

 if($from_date === null)
 {
  $from_date = $date;
 }

Purtroppo non ha funzionato e non è stato possibile trovare un modo per impostarlo. Grazie!

3
Eva Farkasne

Dai un'occhiata a JModelList :: populateState () sul backend di qualsiasi componente principale, come com_banners.

È possibile utilizzare il metodo getUserStateFromRequest per impostare un valore predefinito. Vedi 3 ° parametro, $default.

/**
 * Gets the value of a user state variable and sets it in the session
 *
 * This is the same as the method in JApplication except that this also can optionally
 * force you back to the first page when a filter has changed
 *
 * @param   string   $key        The key of the user state variable.
 * @param   string   $request    The name of the variable passed in a request.
 * @param   string   $default    The default value for the variable if not found. Optional.
 * @param   string   $type       Filter for the variable, for valid values see {@link JFilterInput::clean()}. Optional.
 * @param   boolean  $resetPage  If true, the limitstart in request is set to zero
 *
 * @return  The request user state.
 *
 * @since   12.2
 */
public function getUserStateFromRequest($key, $request, $default = null, $type = 'none', $resetPage = true)

Questo aiuta?

2
Valentin Despa