In die $objects fürs List-Template eingreifen? (Pagination-Problem nach Filter)

  • Hey Leute,

    ich habe folgende Dateien:

    • TodoList.class.php
    • TodoListPage.class.php
    • todoList.tpl

    nun habe ich in der todoList.tpl einen sehr simplen Filter eingebaut.

    Smarty: todoList.tpl
    {foreach from=$objects item=todo}
                        {if $done == '' || $done == $todo->done}
    PHP: TodoListPage.class.php
    public function readParameters()
        {
            parent::readParameters();
    
            if (isset($_REQUEST['done'])) {
                $this->doneParameter = \intval($_REQUEST['done']);
            }
        }


    Allerdings auch eine Pagination:

    Smarty: todoList.tpl
    {hascontent}
        <div class="paginationTop">
            {content}
                {pages print=true assign=pagesLinks application='todolist' controller='TodoList' link="pageNo=%d&sortField=$sortField&sortOrder=$sortOrder&done=$done"}
            {/content}
        </div>
    {/hascontent}


    Mein Problem:

    Wenn ich nun z. B. 27 Einträge habe, aber nach einem Kriterium filtere und nur noch 19 Einträge hätte, dann wird das nicht auf einer Seite (mit höchstens 20 Einträgen) angezeigt, sondern auf zwei. Denn die Pagination wird durch meinen oben gezeigten "Filter" ja nicht beeinflusst.

    Ich gehe davon aus, dass ich das an der Wurzel, also im TodoList-Controller anpacken müsste und die $objects direkt filtern sollte. Wie mach ich das am besten?


    Liebe Grüße und Vielen Dank im Voraus!

    Julian

    Managed Webhosting, hochwertige Plugins und individuelle Auftragsarbeiten:

    Julian-Pfeil.de

  • Falls es sich um eine wcf\page\MultipleLinkPage handelt: Event-Listener auf afterInitObjectList, dann kannst du über $eventObj->objectList->getConditionBuilder() dein Filter-Kriterium festlegen.

    Und ich kann ich das nicht in der TodoList-Klasse machen, sondern brauche zwingend den Event-Listener?

    Müsste doch eigentlich auch gehen, wenn ich direkt in die Funktion initObjectList schreibe, oder?

    Danke auf jeden Fall für den Tipp :)

    Managed Webhosting, hochwertige Plugins und individuelle Auftragsarbeiten:

    Julian-Pfeil.de

  • Dankeschön Alexander Ebert & pehbeh

    Dank euch hab ich's :)

    Managed Webhosting, hochwertige Plugins und individuelle Auftragsarbeiten:

    Julian-Pfeil.de

    • Offizieller Beitrag

    Und ich kann ich das nicht in der TodoList-Klasse machen, sondern brauche zwingend den Event-Listener?

    Müsste doch eigentlich auch gehen, wenn ich direkt in die Funktion initObjectList schreibe, oder?

    Zur Klarstellung: Ja, korrekt. Ich hatte irrtümlich angenommen, dass es sich bei der Frage um ein Plugin handelt.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!