Ergebnis 1 bis 4 von 4

Thema: Sortierung funktionierte nicht mehr, ist das so ok?

  1. #1
    Contao-Fan
    Registriert seit
    20.06.2009.
    Beiträge
    612

    Standard Sortierung funktionierte nicht mehr, ist das so ok?

    Hallo zusammen,

    ich bräuchte nochmal eure Hilfe, in diesem Fall Kontrolle. Und zwar habe ich den Header mit Sortiertlinks meiner Tabelle aus 4.13 mal mit Hilfe von ChatGPT anpassen lassen und auch etwas verändert. Ich habe gestaunt, dass das geklappt hat, aber die Sortierung funktioniert so wie sie soll. Nun will ich da aber auch nicht blind irgendwas übernehmen und mir damir irgendwelche Probleme einfangen. Es wäre toll, wenn nochmal jemand da drüber schauen und sagen würde, wenn irgend etwas kritisch wäre. Danke!

    Code:
    <?php
    $container = \Contao\System::getContainer();
    $request   = $container->get('request_stack')->getCurrentRequest();
    $query     = $request?->getRequestUri() ?? '';
    
    /**
     * Render sort link icon for a column
     * - Shows only one icon per column
     * - Indicates current sort direction or neutral if not sorted
     */
    $renderSort = function (string $key) use ($query) {
    
        $ascKey  = "orderBy/$key/orderDir/ASC";
        $descKey = "orderBy/$key/orderDir/DESC";
    
        $isAsc  = str_contains($query, $ascKey);
        $isDesc = str_contains($query, $descKey);
    
        // Determine icon
        if ($isAsc) {
            $icon = 'fa-sort-up';
            $title = 'ASC';
        } elseif ($isDesc) {
            $icon = 'fa-sort-down';
            $title = 'DESC';
        } else {
            $icon = 'fa-sort';
            $title = 'Sortieren';
        }
    
        // Link toggles direction
        $nextDir = $isAsc ? 'DESC' : 'ASC';
    
        $href = \Contao\Frontend::addToUrl("orderBy=$key&orderDir=$nextDir");
    
        return sprintf(
            '<a data-escargot-ignore rel="nofollow" href="%s" data-toggle="tooltip" title="%s">
                <i class="fa %s" aria-hidden="true"></i>
            </a>',
            $href,
            $title,
            $icon
        );
    };
    ?>
    
    <div class="header col">Foto<br>Sortierung</div>
    
    <div class="header col">
        deutscher Name
        <?php echo $renderSort('titel'); ?>
    </div>
    
    <div class="header col">
        botanischer Name
    </div>
    
    <div class="header col">
        Fettgehalt<br>
        <?php echo $renderSort('fett'); ?>
    </div>
    
    <div class="header col">
        Kohlenhydrate<br>
        <?php echo $renderSort('kohlenhydrate'); ?>
    </div>
    
    <div class="header col">
        Proteingehalt<br>
        <?php echo $renderSort('proteine'); ?>
    </div>
    Viele Grüße
    Shania

  2. #2
    Wandelndes Contao-Lexikon Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    10.388
    User beschenken
    Wunschliste

    Standard

    wenn es funktioniert "trotz ChatGPT", ist doch prima...

    Folgende Anmerkungen:

    * etwas aufgeräumter wäre es, den Programmierteil in eine "Helper-Klasse" auszulagern - siehe Vortrag und Unterlagen zur CK23 - dann könnte der 'request_stack' über Injection in die Klasse
    * inzwischen ist es üblich, statt "echo" die Kurzform zu nehmen also
    <?php echo $renderSort('titel'); ?> => <?= $renderSort('titel') ?>
    * mit dem Lesen des Handbuchs, kann man sich das Leben leichter machen: generateSortingLink
    (falls jemand den ChatGPT trifft, gerne weitersagen...)

  3. #3
    Contao-Fan
    Registriert seit
    20.06.2009.
    Beiträge
    612

    Standard

    Danke! Ja, ich war auch ganz überrascht, dass das geklappt hat .

    Das mit dem echo weiß ich. Hatte er wieder vergessen, aber das kann ich auch selber ändern.

    Ich habe mir das im Handbuch vorher angesehen, aber da ich es nicht verstanden habe, nicht ausprobiert. So konnte ich zumindest nachvollziehen . Aber ich kann es ihm ja mal zeigen, der versteht das sicher und erklärt es mir dann *lol* .
    Viele Grüße
    Shania

  4. #4
    Wandelndes Contao-Lexikon Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    10.388
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Shania Beitrag anzeigen
    Ich habe mir das im Handbuch vorher angesehen, aber da ich es nicht verstanden habe, nicht ausprobiert.
    was hast Du da nicht verstanden? ggf. kann man hier nachsteuern

    vereinfacht: es gibt
    * renderSortingLink - der rendert einen kompletten Link
    * generateSortingLink - der generiert ein Array womit man selbst einen Link zusammenbauen kann

    Parameter sind jeweils <Attributs-Spaltenname> und <Sortierrichtung>

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •