Ergebnis 1 bis 10 von 10

Thema: Pagination im Template wird nicht angezeigt

  1. #1
    Alter Contao-Hase
    Registriert seit
    20.06.2009.
    Ort
    Graz (Austria)
    Beiträge
    1.459

    Standard Pagination im Template wird nicht angezeigt

    Hallo, ein problem hab ich noch bei meinem Modul. Es wird mir die Pagination nicht angezeigt, und funktionieren tut sie auch nur zu 50%.

    Folgendes:
    In meiner ModuleWebmailList.php hab ich für die Pagination folgendes stehen:
    PHP-Code:
    .....
    protected 
    $strTemplate 'webmail_list';
    ......

    $webmailCount WebmailModel::findAll();
            
    $rows = array();    
            while(
    $webmailCount->next())
            {
                
    $rows[] = $webmailCount->row();
            }
            
            
    $total = \count($rows);
            
    $limit $total;
            
    $offset 0;
                    
            
    // Pagination
            
    if ($this->perPage 0)
            {
                
    $id 'page_e' $this->id;
                
    $page Input::get($id) ?? 1;
     
                if (
    $page || $page max(ceil($total/$this->perPage), 1))
                {
                    throw new 
    PageNotFoundException('Page not found: ' Environment::get('uri'));
                }
     
                
    $offset = ($page 1) * $this->perPage;
                
    $limit min($this->perPage $offset$total);
     
                
    $objPagination = new Pagination($total$this->perPageConfig::get('maxPaginationLinks'), $id);
                
    $this->Template->pagination $objPagination->generate("\n  ");
            } 
    Im Template webmail_list.html5 steht folgendes:
    PHP-Code:
    <section class="<?= $this->class ?> block"<?= $this->cssID ?><?php if ($this->style): ?> style="<?= $this->style ?>"<?php endif ?>>

        <?php if ($this->headline): ?>
            <<?= $this->hl ?>><?= $this->headline ?></<?= $this->hl ?>>
        <?php endif ?>
        
        <?= $this->webmails ?>
        <?= $this->pagination ?>
        
    </section>
    Aber mir kommt vor, es greift nicht. Es greift immer das Template, welches ich im Module ausgewählt habe. Entweder "mod_webmail_list_all.html5 oder mod_webmail_list_compliance.html5.

    Wenn ich in diesen Templates auch
    PHP-Code:
    <?= $this->pagination ?>
    einbaue, erscheint dies Pagination auch nicht.

    Das ist der 1. Fehler.

    Das 2. Problem ist, wenn ich im Modul bei der Pagination 10 eingebe, so dass die letzten 10 erscheinen, funktioniert das bei "mod_webmail_list_all.html5. Beim anderen Template nicht, da dies anscheinend auf das Datum geht. Dort erscheint nichts, wenn nicht in der Datenbank bei den letzten 10 ein Flag bei Complinance gesetzt wurde.
    LG, Andi

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    35.517
    Partner-ID
    10107

    Standard

    Einiges an deinem Code kann so nicht funktionierten. Du berechnest zwar offset und limit für deine Pagination, wendest diese dann aber gar nicht an.
    » sponsor me via GitHub or PayPal or Revolut

  3. #3
    Alter Contao-Hase
    Registriert seit
    20.06.2009.
    Ort
    Graz (Austria)
    Beiträge
    1.459

    Standard

    Ähm, das versteh ich jetzt aber nicht. In Contao 4.13 funktioniert das
    LG, Andi

  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    35.517
    Partner-ID
    10107

    Standard

    Du sagst in deinem Code
    PHP-Code:
    $webmailCount WebmailModel::findAll(); 
    Das heißt du wirst immer alle Elemente sehen.

    Evt. musst du aber auch den ganzen Code posten, um zu verstehen was dein Code macht.
    » sponsor me via GitHub or PayPal or Revolut

  5. #5
    Alter Contao-Hase
    Registriert seit
    20.06.2009.
    Ort
    Graz (Austria)
    Beiträge
    1.459

    Standard

    Vielleicht hilft dies weiter: https://github.com/m-werk/webmail Im src hab ich das Modul und das Model.

    Ich will ja alle Datensätze, oder ist das der falsche Ansatz?
    LG, Andi

  6. #6
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    35.517
    Partner-ID
    10107

    Standard

    Zitat Zitat von m-werk Beitrag anzeigen
    Ich will ja alle Datensätze
    Nein, du willst ja nur die Datensätze der jeweiligen Page der Pagination. Siehe bspw.: https://github.com/contao/contao/blo....php#L107-L152

    Aber das machst du dann eh hier: https://github.com/m-werk/webmail/bl...ilList.php#L95

    Aber du nutzt hier dein errechnetes $limit nicht.
    » sponsor me via GitHub or PayPal or Revolut

  7. #7
    Alter Contao-Hase
    Registriert seit
    20.06.2009.
    Ort
    Graz (Austria)
    Beiträge
    1.459

    Standard

    Ich komm nicht dahinter
    LG, Andi

  8. #8
    Alter Contao-Hase
    Registriert seit
    20.06.2009.
    Ort
    Graz (Austria)
    Beiträge
    1.459

    Standard

    Hallo nochmal, so eine Nacht darüber geschlafen und finde, dass mein Code trotzdem passen sollte.

    Irgendwie haben wir (so glaube ich) uns auseinandergeredet.

    1. Die Pagination funktioniert soweit. Wenn ich im Modul z.B. 10 eingebe, sehe ich auch nur 10 Datensätze. Wenn ich 20 engebe, sehe ich diese 20. Das funktioniert soweit
    ABER
    ich seh die Pagination selbst nicht. Diese erscheint nicht im Frontend, und ich bekomm es nicht hin, dass diese auch angezeigt wird. Egal in welchem Template ich dies einfüge.
    Die Pagination soll schon alle Datensätze der Datenbank auslesen, sonst weiß diese ja nicht, wieviele Seiten es gibt.

    Das ist mal das grundlegende Problem, was ich habe. Die Darstellung der eigentlichen Pagination.
    LG, Andi

  9. #9
    Alter Contao-Hase
    Registriert seit
    20.06.2009.
    Ort
    Graz (Austria)
    Beiträge
    1.459

    Standard

    Mein Gott, bin ich blöd. Ich muss ja new FrontendTemplate an den Anfang setzen!
    LG, Andi

  10. #10
    Alter Contao-Hase
    Registriert seit
    20.06.2009.
    Ort
    Graz (Austria)
    Beiträge
    1.459

    Standard

    Hallo meine Pagination funktioniert jetzt richtig und es werden die Daten genau so angezeigt, wie ich es gerne möchte.
    Hier mein Modul und darunter noch das Model, welches ich erweitert habe. Es gibt sicherlich einen Code, der nicht so umfassend ist, aber ich bin ja schon mal froh, dass ich es so hinbekommen habe.
    PHP-Code:
    protected function compile()
        {
            
    System::loadLanguageFile('tl_webmail');
                    
            if ((
    $this->webmail_template != $this->strTemplate) && ($this->webmail_template != ''))
            {
                
    $this->strTemplate $this->webmail_template;
                
    $this->Template = new FrontendTemplate($this->strTemplate);
            }
                    
            if (
    $this->strTemplate == 'mod_webmail_list_compliance')
            {
                
    $webmailCount WebmailModel::findBy('compliance'1);
                while (
    $webmailCount->next())
                {
                    
    $rows[] = $webmailCount->row();
                }
            } else {
                
    $webmailCount WebmailModel::findBy('alle'1);
                while (
    $webmailCount->next())
                {
                    
    $rows[] = $webmailCount->row();
                }
            }
            
            
    /**
             * Abfragen der Tabelle
             **/                 
            
    $total = \count($rows);
            
    $limit $total;
            
    $offset 0;    
                            
            
    // Pagination
            
    if ($this->perPage 0)
            {
                
    $id 'page_e' $this->id;
                
    $page Input::get($id) ?? 1;
     
                if (
    $page || $page max(ceil($total/$this->perPage), 1))
                {
                    throw new 
    PageNotFoundException('Page not found: ' Environment::get('uri'));
                }
     
                
    $offset = ($page 1) * $this->perPage;
                
    $limit min($this->perPage $offset$total);
     
                
    $objPagination = new Pagination($total$this->perPageConfig::get('maxPaginationLinks'), $id);
                
    $this->Template->pagination $objPagination->generate("\n  ");
            }
            
            
    $webmails = array();
            
            if (
    $this->strTemplate == 'mod_webmail_list_compliance')
            {
                
    $result WebmailModel::findAllByPublishedCompliance($offset, (int)$this->perPage);
                
                while (
    $result->next())
                {        
                    
    $webmails[] = array
                    (
                        
    'title' => StringUtil::specialchars($result->title),
                        
    'url'    => htmlspecialchars($result->url),
                        
    'alle'  => $result->alle,
                        
    'compliance' => $result->compliance,
                        
    'date'    => $result->date
                    
    );
                }
            } else {
                
    $result WebmailModel::findAllByPublished($offset, (int)$this->perPage);
                
                while (
    $result->next())
                {        
                    
    $webmails[] = array
                    (
                        
    'title' => StringUtil::specialchars($result->title),
                        
    'url'    => htmlspecialchars($result->url),
                        
    'alle'  => $result->alle,
                        
    'compliance' => $result->compliance,
                        
    'date'    => $result->date
                    
    );
                }
            }
            
            
    //Template
            
    $this->Template->title StringUtil::specialchars($GLOBALS['TL_LANG']['tl_webmail']['header_title']);
            
    $this->Template->datum StringUtil::specialchars($GLOBALS['TL_LANG']['tl_webmail']['header_date']);
            
    $this->Template->webmails $webmails;
        } 
    Und hier mein Model:
    PHP-Code:
    public static function findAllByPublished($offset$limit)
        {    
            
    $t = static::$strTable;
            
    $arrColumns = array("$t.published=?");
            
    $arrOptions = array('order' => "$t.date desc"'offset' => $offset'limit' => $limit);

            return static::
    findBy($arrColumns1$arrOptions);
        }
        
            public static function 
    findAllByPublishedCompliance($offset$limit)
        {    
            
    $t = static::$strTable;
            
    $arrColumns = array("$t.published=? AND $t.compliance=1");
            
    $arrOptions = array('order' => "$t.date desc"'offset' => $offset'limit' => $limit);

            return static::
    findBy($arrColumns1$arrOptions);
        } 
    LG, Andi

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
  •