choisir son ordre de selection des éléments par défault / composant

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • choisir son ordre de selection des éléments par défault / composant

    Salut la communauté, en cours de finalisation de composant sur une base de composant foos.
    juste petit question rapport à ordre de selection par défault de mon listing de foos. aka dans mon composant, j'ai des entité (1 foo) et le listing des entités (foos) quand je liste tous mes foos de mon composant.
    mon code pour Model est :

    Code PHP:
    protected function getListQuery()
    {
    // Create a new query object.
    $db $this->getDbo();
    $query $db->getQuery(true);

    // Select the required fields from the table.
    $query->select(
    $db->quoteName(
    explode(
    ', ',
    $this->getState(
    'list.select',
    'a.id, a.name, a.catid' .
    ', a.access' .
    ', a.checked_out' .
    ', a.checked_out_time' .
    ', a.language' .
    ', a.ordering' .
    ', a.featured' .
    ', a.state' .
    ', a.published' .
    ', a.publish_up, a.publish_down'
    )
    )
    )
    );

    $query->from($db->quoteName('#__foos_details''a'));

    // Join over the asset groups.
    $query->select($db->quoteName('ag.title''access_level'))
    ->
    join(
    'LEFT',
    $db->quoteName('#__viewlevels''ag') . ' ON ' $db->quoteName('ag.id') . ' = ' $db->quoteName('a.access')
    );

    // Join over the categories.
    $query->select($db->quoteName('c.title''category_title'))
    ->
    join(
    'LEFT',
    $db->quoteName('#__categories''c') . ' ON ' $db->quoteName('c.id') . ' = ' $db->quoteName('a.catid')
    );

    // Join over the language
    $query->select($db->quoteName('l.title''language_title'))
    ->
    select($db->quoteName('l.image''language_image'))
    ->
    join(
    'LEFT',
    $db->quoteName('#__languages''l') . ' ON ' $db->quoteName('l.lang_code') . ' = ' $db->quoteName('a.language')
    );

    // Join over the associations.
    if (Associations::isEnabled()) {
    $subQuery $db->getQuery(true)
    ->
    select('COUNT(' $db->quoteName('asso1.id') . ') > 1')
    ->
    from($db->quoteName('#__associations''asso1'))
    ->
    join('INNER'$db->quoteName('#__associations''asso2'), $db->quoteName('asso1.key') . ' = ' $db->quoteName('asso2.key'))
    ->
    where(
    [
    $db->quoteName('asso1.id') . ' = ' $db->quoteName('a.id'),
    $db->quoteName('asso1.context') . ' = ' $db->quote('com_foos.item'),
    ]
    );

    $query->select('(' $subQuery ') AS ' $db->quoteName('association'));
    }

    // Join over the users for the checked out user.
    $query->select($db->quoteName('uc.name''editor'))
    ->
    join(
    'LEFT',
    $db->quoteName('#__users''uc') . ' ON ' $db->quoteName('uc.id') . ' = ' $db->quoteName('a.checked_out')
    );

    // Filter on the language.
    if ($language $this->getState('filter.language')) {
    $query->where($db->quoteName('a.language') . ' = ' $db->quote($language));
    }

    // Filter by a single or group of tags.
    $tag $this->getState('filter.tag');

    // Run simplified query when filtering by one tag.
    if (\is_array($tag) && \count($tag) === 1) {
    $tag $tag[0];
    }

    if (
    $tag && \is_array($tag)) {
    $tag ArrayHelper::toInteger($tag);

    $subQuery $db->getQuery(true)
    ->
    select('DISTINCT ' $db->quoteName('content_item_id'))
    ->
    from($db->quoteName('#__contentitem_tag_map'))
    ->
    where(
    [
    $db->quoteName('tag_id') . ' IN (' implode(','$query->bindArray($tag)) . ')',
    $db->quoteName('type_alias') . ' = ' $db->quote('com_foos.foo'),
    ]
    );

    $query->join(
    'INNER',
    '(' $subQuery ') AS ' $db->quoteName('tagmap'),
    $db->quoteName('tagmap.content_item_id') . ' = ' $db->quoteName('a.id')
    );
    } else if (
    $tag = (int) $tag) {
    $query->join(
    'INNER',
    $db->quoteName('#__contentitem_tag_map''tagmap'),
    $db->quoteName('tagmap.content_item_id') . ' = ' $db->quoteName('a.id')
    )
    ->
    where(
    [
    $db->quoteName('tagmap.tag_id') . ' = :tag',
    $db->quoteName('tagmap.type_alias') . ' = ' $db->quote('com_foos.foo'),
    ]
    )
    ->
    bind(':tag'$tagParameterType::INTEGER);

    }

    // Filter by access level.
    if ($access $this->getState('filter.access')) {
    $query->where($db->quoteName('a.access') . ' = ' . (int) $access);
    }

    // Filter by published state
    $published = (string) $this->getState('filter.published');

    if (
    is_numeric($published)) {
    $query->where($db->quoteName('a.published') . ' = ' . (int) $published);
    } else if (
    $published === '') {
    $query->where('(' $db->quoteName('a.published') . ' = 0 OR ' $db->quoteName('a.published') . ' = 1)');
    }

    // Filter by a single or group of categories.
    $categoryId $this->getState('filter.category_id');

    if (
    is_numeric($categoryId)) {
    $query->where($db->quoteName('a.catid') . ' = ' . (int) $categoryId);
    } else if (
    is_array($categoryId)) {
    $query->where($db->quoteName('a.catid') . ' IN (' implode(','ArrayHelper::toInteger($categoryId)) . ')');
    }

    // Filter by search in name.
    $search $this->getState('filter.search');

    if (!empty(
    $search)) {
    if (
    stripos($search'id:') === 0) {
    $query->where('a.id = ' . (int) substr($search3));
    } else {
    $search $db->quote('%' str_replace(' ''%'$db->escape(trim($search), true) . '%'));
    $query->where(
    '(' $db->quoteName('a.name') . ' LIKE ' $search ')'
    );
    }
    }

    // Filter by featured.
    $featured = (string) $this->getState('filter.featured');

    if (
    in_array($featured, ['0','1'])) {
    $query->where($db->quoteName('a.featured') . ' = ' . (int) $featured);
    }

    // Add the list ordering clause.
    $orderCol $this->state->get('list.ordering''a.name');
    $orderDirn $this->state->get('list.direction''asc');

    if (
    $orderCol == 'a.ordering' || $orderCol == 'category_title') {
    $orderCol $db->quoteName('c.title') . ' ' $orderDirn ', ' $db->quoteName('a.ordering');
    }

    $query->order($db->escape($orderCol ' ' $orderDirn));

    return 
    $query;





    Pas de soucis outre mesure sauf que j'aimerai que par défault, l'ordre se fasse sur l'id, pour que je puisse avoir les derniers entrés en tete de liste. J'ai donc mis un
    $query->order('id DESC');
    juste apres
    $query->from($db->quoteName('#__foos_details', 'a'));

    sur mon query et cela fonctionne sauf que du coup, cela bloque toute recherche autre faite par le biais de mes selecteurs.

    Comment puis-je donc stipuler au systeme que par défault, $query->order('id DESC'); mais que des qu'il y a une requete, c'est l'ordre de la requete qui prime ?
    Merci d'avance.

Annonce

Réduire
Aucune annonce pour le moment.

Partenaire de l'association

Réduire

Hébergeur Web PlanetHoster
Travaille ...
X