web-dev-qa-db-fra.com

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

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.

enter image description here

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?

8
Malaiselvan

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.

6
Malaiselvan

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);
}
3
Nagarjun

J'ai rencontré le même problème, mais je l'ai retrouvé. C'est 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 définir les filtres tels que mentionnés par @Nagarjun dans votre modèle.
  3. Dans votre vue, 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 de modèle:

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