Les outils de recherche ne sont pas ouverts par défaut

9

Nous implémentons les principaux outils de recherche dans notre vue de liste de composants personnalisée. Lorsque je clique sur les outils de recherche, le formulaire ci-dessous est parfait.

entrez la description de l'image ici

Lorsque je clique sur le menu déroulant et que je sélectionne un statut particulier, par exemple `` Corbeille '', la page est envoyée et le formulaire est chargé avec uniquement les enregistrements supprimés, ce qui est également parfait.

Une fois le chargement de la page terminé, les outils de recherche n'affiche pas les filtres par défaut. L'utilisateur doit à nouveau cliquer sur le bouton des outils de recherche pour ouvrir les filtres et réinitialiser l'état sélectionné.

Comment puis-je faire les outils de recherche pour afficher les filtres par défaut?

Malaiselvan
la source

Réponses:

7

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. J'ai défini cette variable de manière appropriée en fonction des valeurs de filtre sélectionnées.

Malaiselvan
la source
3

Les champs de filtre seront automatiquement remplis 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);
}
Nagarjun
la source
Merci. Mais ça ne marche pas. J'ai ces champs configurés dans la variable de configuration dans le constructeur, mais je dois toujours cliquer sur le bouton «Outils de recherche» pour ouvrir les options de filtre. Quand je fais plus de recherches sur la source de vue, j'ai trouvé que "filtersHidden":truec'est toujours vrai dans mon cas.
Malaiselvan
1

J'ai rencontré le même problème, mais je l'ai retrouvé jusqu'à ce qu'il est. Il s'agit d'un processus en plusieurs étapes pour configurer les filtres.

  1. Pour que les filtres fonctionnent, vous devez ajouter le fichier filter_.xml dans le dossier models / forms. Cela prend un fichier XML Joomla normal.
  2. Vous devez avoir les filtres définis comme mentionné par @Nagarjun dans votre modèle
  3. À votre avis, vous devez ajouter cette ligne dans la fonction d'affichage

    $this->activeFilters = $this->get('ActiveFilters');
    
  4. 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();
    
  5. Enfin, ajoutez les filtres à votre fichier modèle:

    echo JLayoutHelper::render('joomla.searchtools.default', array('view' => $this));
    
RolandD
la source