Nous mettons en œuvre les principaux outils de recherche dans notre vue Liste des composants personnalisés. Lorsque je clique sur les outils de recherche, il affiche le formulaire ci-dessous, ce qui est parfait.
Lorsque je clique sur le menu déroulant et que je sélectionne un statut particulier, Ex. 'Trashé', la page est soumise et le formulaire chargé uniquement avec les enregistrements supprimés, ce qui est également parfait.
Une fois le chargement de la page terminé, les outils de recherche ne montrent pas les filtres par défaut. L'utilisateur doit à nouveau cliquer sur le bouton des outils de recherche pour ouvrir les filtres afin de réinitialiser l'état sélectionné.
Comment puis-je rendre les outils de recherche pour afficher les filtres par défaut?
J'ai réussi à ajouter des options comme ci-dessous
JLayoutHelper::render(
'joomla.searchtools.default',
array('view' => $this,
'options' => array('filtersHidden' =>$hidden)));
Si $ hidden est défini sur 0, les outils de recherche ne seront pas masqués. Je règle cette variable de manière appropriée en fonction des valeurs de filtre sélectionnées.
Les champs de filtre seront automatiquement renseignés s'ils sont répertoriés dans le tableau $ config ["filter_fields"] de votre modèle dans le constructeur.
Par exemple:
public function __construct ($config = array())
{
if (empty($config['filter_fields']))
{
$config['filter_fields'] = array(
'id', 'a.id',
'title', 'a.title',
'alias', 'a.alias',
'checked_out', 'a.checked_out',
'checked_out_time', 'a.checked_out_time',
'catid', 'a.catid',
'category_title',
'published', 'a.published',
'access', 'a.access',
'access_level',
'created', 'a.created',
'created_by', 'a.created_by',
'ordering', 'a.ordering',
'featured', 'a.featured',
'language', 'a.language',
'hits', 'a.hits',
'publish_up', 'a.publish_up',
'publish_down', 'a.publish_down'
);
}
parent::__construct($config);
}
J'ai rencontré le même problème, mais je l'ai retrouvé. C'est un processus en plusieurs étapes pour configurer les filtres.
Dans votre vue, vous devez ajouter cette ligne dans la fonction d'affichage
$this->activeFilters = $this->get('ActiveFilters');
Si vous avez des docblocks, vous devez le spécifier en tant que variable publique:
/**
* List of active filters
*
* @var array
* @since 1.0
*/
public $activeFilters = array();
Enfin, ajoutez les filtres à votre fichier de modèle:
echo JLayoutHelper::render('joomla.searchtools.default', array('view' => $this));