ArrayPager

Anmerkungen, Fragen und Hinweise zur Konfiguration dürfen in diesem Forum gepostet werden. // Notes, questions, and hints on the configuration can be posted here.
Benutzeravatar
ma2604121
Beiträge: 349
Registriert: 24.01.2011, 23:42:18

ArrayPager

Beitrag von ma2604121 » 09.10.2011, 22:14:37

Sehe ich es richtig, dass es möglicherweise bereits folgendes Konstrukt mit dem ArrayPager ausreichen würde:

Code: Alles auswählen

$BooksList = $orm->loadRelatedObjects($User, 'Authors2Books', $BooksCrit);
$oAPMF = $this->__getServiceObject ('extensions::arraypager::biz', 'ArrayPagerManagerFabric');
$oAPM->registerPager ('NameDesPagers', $BooksList);

// Ausgabe
$DataList = $oAPM->loadEntries ('NameDesPagers');
$HTMLOutput = $oAPM->getPager ('NameDesPagers'); 
$HTMLOutput dann noch an einen entsprechenden Template im Platzhalter ausliefern und das Template ausgeben?

Dazu natürlich noch die entsprechenden Konfigurationsdateien.

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: Fragen zum Iterator

Beitrag von dave » 10.10.2011, 16:36:20

Jap, so ist! Beim ArrayPager ist wirklich nur minimaler Aufwand nötig. Deswegen nutze ich den auch ;)

Ich habe mich komplett an die Anleitung im Wiki gehalten, damit geht rein gar nichts schief:
http://wiki.adventure-php-framework.org ... rweiterung

Benutzeravatar
ma2604121
Beiträge: 349
Registriert: 24.01.2011, 23:42:18

Re: Fragen zum Iterator

Beitrag von ma2604121 » 15.10.2011, 22:40:55

Findet der Array-Pager irgendwo im APF Anwendung, so dass ich mir die konkrete Umsetzung mal anschauen kann? Bei mir will das noch nicht so richtig...

Benutzeravatar
dr.e.
Administrator
Beiträge: 4527
Registriert: 04.11.2007, 16:13:53

Re: Fragen zum Iterator

Beitrag von dr.e. » 16.10.2011, 11:15:21

Lutz hat die Extension beigesteuert, vielleicht ziehen wir ihn mal zu Rate. Was will denn bei dir nicht so, wie du? :)
Viele Grüße,
Christian

Benutzeravatar
ma2604121
Beiträge: 349
Registriert: 24.01.2011, 23:42:18

Re: Fragen zum Iterator

Beitrag von ma2604121 » 16.10.2011, 11:22:39

Vielleicht gliederst Du das gerade in ein neues Thema (ArrayPager) aus?

Also ich bin mir über die Verwendung insgesamt noch nicht im Klaren. Wobei das Problem letzendlich mit Sicherheit recht marginal ist.

Die Konfiguration usw. passt soweit.

Code: Alles auswählen

[PagerSection]
Pager.DesignNamespace = "extensions::arraypager::pres::templates"
Pager.DesignTemplate = "arraypager"
optional: Pager.Entries = "2" 
Aber wie bekomme ich den Inhalt in mein Template? Muss ich das Template /apps/extensions/arraypager/pres/templates/arraypager.html als Vorlage nutzen, dort entsprechende Platzhalter einsetzen und diese dann durch den Controller befüllen lassen? Werden dann die jeweiligen Templates in der ini-Datei unter Pager.DesignNamespace bzw. Pager.DesignTemplate hinterlegt?

Wie spielen die arraypager_controller.php und die arraypager.html zusammen? Muss ich im späteren, sofern meine obige Annahme stimmt, dass jeweils eigene Templates erstellt werden müssen, für jedes ArrayPager-Template einen extra Controller anlegen?

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: Fragen zum Iterator

Beitrag von dave » 16.10.2011, 17:27:06

Hi,

Der ArrayPager hat schon ein eigenes Standard-Template, welches du hier findest:

Code: Alles auswählen

extensions::arraypager::pres::templates
mit dem Namen

Code: Alles auswählen

arraypager
.html, wie du das eben in der Config definiert hast.
Wenn du nun beispielsweise ein eigenes Template nutzen möchtest, musst du einfach nur die Config anpassen:

Code: Alles auswählen

sites::blablubb::pres::templates::arraypager
und die eigentliche Datei

Code: Alles auswählen

liste-buecher
.html

Wie das Ganze dann genau mit dem Platzhalter aussieht und welche es gibt, suchst dir am besten aus dem Standard-Template heraus. Möchtest du besteimmte Bereiche einfach nicht haben, lösche das einfach aus dem Template und gut ist das ;).

Der Arraypager wird als Service geladen (habe Netbeans grad nicht offen, ich denke aber schon) und du musst dich somit überhaupt nicht um den arraypager_controller.php kümmern. Was dort passiert und gemacht wird, interessiert dich im Moment einfach mal gar nicht. Fakt ist, der Controller bietet dir die Möglichkeit einer Seitenaufteilung. Du msst diesen auch nicht vorher in deinem Controller importieren oder sonstwas, das wird ja über das Laden als Service geregelt :).

Ich würde sagen, du postest mal deinen Controller und beschreibst kurz, was du vor hast. Wir können das ja dann gemeinsam durch gehen.

Ich bin ein grosser Fan des ArrayPager, weil er einfach ist, klar gegliedert und eine super Arbeit verrichtet! ;)

Benutzeravatar
ma2604121
Beiträge: 349
Registriert: 24.01.2011, 23:42:18

Re: ArrayPager

Beitrag von ma2604121 » 19.10.2011, 22:44:03

Irgendwie macht es nicht "Klick", wie ich den Pager genau verwende...

Also ich habe folgenden Controller:

Code: Alles auswählen

import('extensions::arraypager::biz', 'ArrayPagerManagerFabric');

class ItemListController extends base_controller{
    
    public function transformContent() {
    $oAPMF = $this->getServiceObject('extensions::arraypager::biz', 'ArrayPagerManagerFabric');
    $oAPM = $oAPMF->getArrayPagerManager('AutoItemList');
    
    $DataArray = array(
        'Title' => 'Buch 1',
        'Title' => 'Buch 2',
        'Title' => 'Buch 3',
        'Title' => 'Buch 4',
        'Title' => 'Buch 5',
        'Title' => 'Buch 6',
        'Title' => 'Buch 7',
        'Title' => 'Buch 8',
        'Title' => 'Buch 9',
    );
    
    $oAPM->registerPager ('AutoItemList', $DataArray);
    }   
} 
Wie muss ich nun vorgehen, damit die Daten auch ausgegeben werden?? Das ist mir noch nicht klar geworden.

Das Template (Original-Template des Pagers + Platzhalter) würde dann wie folgt aussehen:

Code: Alles auswählen

<@controller namespace="extensions::arraypager::pres::documentcontroller" file="arraypager_controller" class="arraypager_controller" @>

<html:form name="ItemList">
    Titel : <form:placeholder name="Title"/>
</html:form>

<div style="width: 100%; border: 0px solid black; text-align: left; padding-bottom: 2px;">
  <html:placeholder name="PreviousPage" /><html:placeholder name="Pager" /><html:placeholder name="NextPage" />
  <html:placeholder name="Entries" />
</div>
<br />

<html:template name="Page_Selected">
<template:addtaglib namespace="tools::html::taglib" prefix="template" class="getstring" />
  <a href="<template:placeholder name="URL" />" title="<template:getstring namespace="extensions::arraypager" config="language" entry="DisplayPage" /> <template:placeholder name="Page" />"><font style="font-size: 16px; font-weight: bold;"><template:placeholder name="Page" /></font></a>&nbsp;&nbsp;
</html:template>

<html:template name="Page">
<template:addtaglib namespace="tools::html::taglib" prefix="template" class="getstring" />
  <a href="<template:placeholder name="URL" />" title="<template:getstring namespace="extensions::arraypager" config="language" entry="DisplayPage" /> <template:placeholder name="Page" />"><template:placeholder name="Page" /></a>&nbsp;&nbsp;
</html:template>

<html:template name="PreviousPage_Active">
<template:addtaglib namespace="tools::html::taglib" prefix="template" class="getstring" />
  <a href="<template:placeholder name="URL" />" title="<template:getstring namespace="extensions::arraypager" config="language" entry="DisplayPreviousPage" />"><font style="font-size: 14px;">&laquo;</font></a>&nbsp;&nbsp;
</html:template>

<html:template name="PreviousPage_Inactive">
  <font style="font-size: 14px;">&laquo;</font>&nbsp;&nbsp;
</html:template>

<html:template name="NextPage_Active">
<template:addtaglib namespace="tools::html::taglib" prefix="template" class="getstring" />
  <a href="<template:placeholder name="URL" />" title="<template:getstring namespace="extensions::arraypager" config="language" entry="DisplayNextPage" />"><font style="font-size: 14px;">&raquo;</font></a>
</html:template>

<html:template name="NextPage_Inactive">
  <font style="font-size: 14px;">&raquo;</font>
</html:template>

<html:template name="Entries_Active">
<template:addtaglib namespace="tools::html::taglib" prefix="template" class="getstring" />
  <a href="<template:placeholder name="URL" />" title="<template:placeholder name="Entries" /> <template:getstring namespace="extensions::arraypager" config="language" entry="DisplayNEntriesPerPage" />"><strong><template:placeholder name="Entries" /></strong></a> |
</html:template>

<html:template name="Entries_Inactive">
<template:addtaglib namespace="tools::html::taglib" prefix="template" class="getstring" />
  <a href="<template:placeholder name="URL" />" title="<template:placeholder name="Entries" /> <template:getstring namespace="extensions::arraypager" config="language" entry="DisplayNEntriesPerPage" />"><template:placeholder name="Entries" /></a> |
</html:template>

<html:template name="Entries">
<template:addtaglib namespace="tools::html::taglib" prefix="template" class="getstring" />
  <br />
  <font style="font-size: 9px;"><template:getstring namespace="extensions::arraypager" config="language" entry="Entries" /></font>&nbsp;|<template:placeholder name="Entries" />
</html:template> 

Benutzeravatar
MrNiceGuy
Beiträge: 749
Registriert: 03.02.2009, 16:49:42
Wohnort: Nienburg / Weser

Re: ArrayPager

Beitrag von MrNiceGuy » 21.10.2011, 19:18:23

Moin!

Es freut mich zu lesen, dass mein ArrayPager seine kleine Fangemeinde hat :)

Zu deinem "Problem": Der ArrayPager arbeitet vollkommen selbstständig. Du musst ihm nur sagen, welches Array er als Basis nehmen soll und der Rest passiert im Hintergrund.
Die Möglichkeit ein eigenes Template anzugeben ist hierbei erstmal für die Arbeit des Pagers nicht erforderlich, bietet dir später aber die Möglichkeit mehrere verschiedene Darstellung deines Pagers zu implementieren - falls gewünscht. Der Controller kann dabei stets der gleiche bleiben, es sei denn du wünscht dir das etwas anders. Grundsätzlich reicht es hier jedoch aus sich das Original-Template anzuschauen und die html:templates zu betrachten, die es gibt. Damit es nicht zu Fehlern kommt sollten diese auch immer alle vorhanden sein. Der Inhalt kann von dir aber gerne so angepasst werden, wie du es gerne hättest. Wichtig hierbei: Die Platzhalter, die möglich sind sind im Standard-Template auch alle vorhanden. Du kannst sie zwar rausschmeißen, aber bestimmte Inhalte sollten einfach angezeigt werden, andernfalls ergibt der Pager wenig Sinn ;) Die Namen sollten eigentlich selbsterklärend sein.

Soweit erstmal zum Template und Controller.

Wenn du ein Daten-Array hast, wie in deinem Beispiel (Kurze Anmerkung: Ich weiß nicht, was passiert, wenn immer der selbe Schlüssel in dieser Form verwendet wird, logisch gesehen dürfte ein Array mit nur einem Datensatz dabei rauskommen; Aber das ist vielleicht auch nur bei dem Beispiel hier so, weil C&P und "Faulheit" und so :D), dann übergibst du es dem Pager so, wie du es bereits getan hast. Das Array ist nun im Pager gespeichert und kann von hier verwendet werden. Grund, weshalb das komplette Array gespeichert wird ist die Performance. Der Pager ging aus einem Projekt mit hoher Datenbank-Last hervor, bei der ich das Problem hatte, dass ein SELECT-Query mit einer Länge von ~2-3kb abgearbeitet werden musste und je nach Anzahl der WHERE-Bedingungen seine Zeit benötigte. Ich suchte also eine Möglichkeit die Daten nicht bei jedem Seitenaufruf erneut abfragen zu müssen. Da es soetwas bis dahin nicht gab erstellte ich den ArrayPager.

Um auf die im Pager gespeicherten Daten zuzugreifen reicht es nun vollkommen aus, folgenden Code (nach der Speicherung des Array im Pager) auszuführen:

Code: Alles auswählen

// Lädt den Pager als fertige HTML-Ausgabe
$HTMLOutput = $oAPM->getPager ('NameDesPagers'); 
Damit hast du den Pager zur Ausgabe auf deiner Seite als fertiges HTML-Konstrukt in der Variablen $HTMLOutput stehen. Diese kannst du nun per echo ausgeben, in eine Datei schreiben oder - wie eigentlich üblich - innerhalb deines Controllers verwenden, um einen Platzhalter damit zu befüllen:

Code: Alles auswählen

$this->setPlaceHolder ('NameDesPlatzhalters', $HTMLOutput); 
Dadurch hast du die volle Kontrolle zum Einen darüber wie der Platzhalter heißen soll und - und das ist das Wichtigste - wo er in deinem HTML-Baum ausgegeben werden soll. Fakt an dieser Stelle: Das hat nichts mit der Template-Datei vom Pager zu tun, der dient nur zur Generierung der HTML-Ausgabe, die du dann in DEINEM Template in DEINEN Platzhalter irgendwo einbetten kannst.

Mit folgendem Code ziehst du dir die Daten der aktuell ausgewählten Seite:

Code: Alles auswählen

//Liefert die aktuelle Seite mit der angegebenen Anzahl Beiträgen je Seite zurück
$DataList = $oAPM->loadEntries ('NameDesPagers'); 
Das heißt für dich: Dir kann es in diesem Moment egal sein, welche Seite der Benutzer ausgewählt hat und wieviele Einträge pro Seite er sehen will, das macht alles der Pager für dich. Hast du ein Array mit 17 Elementen und es ist folgendes Gegeben: Anzahl Beiträge je Seite = 5; Anzahl Seiten gesamt = 4; Aktuelle Seite = 2, dann erhälst du hierdurch von deinem Array mit 17 Elementen die Elemente 6-10. Bei Seite = 3 wären es 11-15 und bei Seite 4 entsprechend 16-17. Du musst nurnoch die Daten weiterverarbeiten, die dir der Pager zurückliefert.

Ich kann verstehen, warum Dave das so toll findet, ich finde den ArrayPager auch immernoch klasse - und sehr dynamisch :)

Ich hoffe ich konnte dir ein wenig beim Verständnis helfen?!

LG
Lutz
There are only 10 Types of people in the world:
Those who understand binary and those who don't.

Benutzeravatar
ma2604121
Beiträge: 349
Registriert: 24.01.2011, 23:42:18

Re: ArrayPager

Beitrag von ma2604121 » 21.10.2011, 20:51:24

Hallo Lutz!

Vielen Dank für Deine ausführliche Antwort. Jetzt ist mir schon mal einiges grundlegend verständlich, was den ArrayPager angeht. Ich habe es testweise wie folgt umgesetzt:

Code: Alles auswählen

<?php
import('modules::genericormapper::data', 'GenericDomainObject');
import ('extensions::arraypager::biz', 'ArrayPagerManagerFabric');

class ListController extends base_controller{
    
    public function transformContent() {
    
    $oAPMF = $this->getServiceObject('extensions::arraypager::biz', 'ArrayPagerManagerFabric');
    $oAPM = $oAPMF->getArrayPagerManager('PagerSection');
    
    $orm = $this->getMapper();
    $BookCrit = new GenericCriterionObject();
    $BookCrit->addOrderIndicator('Date', 'DESC');
    $BookList = $orm->loadObjectListByCriterion('Books', $BookCrit);
    
    // Lädt den Pager als fertige HTML-Ausgabe
    $oAPM->registerPager ('ListPager', $BookList);
    $HTMLOutput = $oAPM->getPager('ListPager');
    $this->setPlaceHolder('Pager', $HTMLOutput);
    $DataList = $oAPM->loadEntries('ListPager');
    
    // PLatzhalter im Template mit Daten befüllen
    $template = &$this->getTemplate('DisplayAll');
    $buffer = '';
    foreach ($DataList as $Book){
        $template->setPlaceHolder('Title', $Book->getProperty('Title'));
        $buffer .= $template->transformTemplate();
        }
    // Template ausgeben
    $this->setPlaceHolder('DisplayAll', $buffer);
    }
    
    private function getMapper(){
    $ormFact = &$this->getServiceObject('modules::genericormapper::data', 'GenericORMapperFactory');
    return $ormFact->getGenericORMapper('modules::genericormapper', 'books', 'books', true);
    }
}
?>
Dann nehme ich mein Template:

Code: Alles auswählen

<table class="List">
    <thead class="List">
    <th>Title</th>
    </thead>
    <tbody>
    <html:placeholder name="DisplayAll"/>
    </tbody>
</table>
<html:placeholder name="Pager"/>

<html:template name="DisplayAll">
    <tr>
    <td><template:placeholder name="Title"/></td>
    </tr>
</html:template> 
Hiermit erhalte ich eine Liste aller vorhandenen Einträge (in der ini habe ich es auf 2 Einträge pro Seite eingeschränkt) und darunter die Linkliste des ArrayPagers zum Blättern (wobei hier nur eine Seite zur Auswahl steht).

Etwa so:

Code: Alles auswählen

Title
APF - Adventure PHP Framework I
APF - Adventure PHP Framework II
APF - Adventure PHP Framework III
APF - Adventure PHP Framework IV
APF - Adventure PHP Framework V
«   1   »
Also irgendwas mache ich wohl noch falsch, was die Datenzuweisung angeht?

Benutzeravatar
ma2604121
Beiträge: 349
Registriert: 24.01.2011, 23:42:18

Re: ArrayPager

Beitrag von ma2604121 » 21.10.2011, 23:52:14

Oh man... :oops:

Man sollte anstatt einfach das Semikolon zu entfernen

Code: Alles auswählen

optional: Pager.Entries = "2" 
einfach alles entfernen

Code: Alles auswählen

Pager.Entries = "2" 
und dann klappt es auch...

Benutzeravatar
MrNiceGuy
Beiträge: 749
Registriert: 03.02.2009, 16:49:42
Wohnort: Nienburg / Weser

Re: ArrayPager

Beitrag von MrNiceGuy » 22.10.2011, 07:51:55

Schön, es freut mich, dass ich dir helfen konnte :)

Zwei kleine Anmerkungen habe ich allerdings: Aktuell fragst du bei jedem Seitenaufruf die Daten aus der DB ab und speicherst sie erneut in den ArrayPager. Das ist vor Allem dann hilfreich, wenn die Datenbank sich häufig aktualisiert und man dann auch die Änderungen direkt haben will. Ändert sich hingegen nur selten etwas, kann man an dieser Stelle einiges an Performance herausholen:

Code: Alles auswählen

if ($oAPM->checkPager ('ListPager') === FALSE)
{
    $orm = $this->getMapper();
    $BookCrit = new GenericCriterionObject();
    $BookCrit->addOrderIndicator('Date', 'DESC');
    $BookList = $orm->loadObjectListByCriterion('Books', $BookCrit);
    
    // Lädt den Pager als fertige HTML-Ausgabe
    $oAPM->registerPager ('ListPager', $BookList);
    $HTMLOutput = $oAPM->getPager('ListPager');
    $this->setPlaceHolder('Pager', $HTMLOutput);
    $DataList = $oAPM->loadEntries('ListPager');
} 
Jetzt werden nur beim allererste Mal die Daten aus der DB geholt und der Pager initialisiert.

Wenn man keine Filtermöglichkeiten (Suchfeld) und dergleichen (z.B. eine Sortierung der Datenmenge) nutzt reicht das vollkommen aus. Alternativ wäre es sonst auch noch möglich das Ganze mit einem Timestamp zu versehen, damit man alle x Sekunden dann eben doch mal die aktuellsten Daten aus der Datenbank holt.

Außerdem ist zu beachten, dass in deinem Fall ein Array mit Objekten verwendet wird, das bedeutet für dich, dass du in einem derartigen Fall immer sicherstellen musst, dass alle Klasse eingebunden sind, von denen Objekte im ArrayPager stecken, bevor die Session gestartet wird! Andernfalls erhälst du eine Fehlermeldung von PHP und unbrauchbare Objekte.

Ich hoffe, dass auch das dir weiterhilft und wünsch dir noch viel Spaß mit dem ArrayPager, aber natürlich vor Allem mit dem APF :)

LG
Lutz
There are only 10 Types of people in the world:
Those who understand binary and those who don't.

Benutzeravatar
ma2604121
Beiträge: 349
Registriert: 24.01.2011, 23:42:18

Re: ArrayPager

Beitrag von ma2604121 » 22.10.2011, 09:03:48

Hallo Lutz,

danke für den Verbesserungsvorschlag. Ich wollte ihn auf die Schnelle mal einfügen, habe aber ein Problem (und derzeit leider zu wenig Zeit, um es genauer zu testen):

Code: Alles auswählen

if ($oAPM->checkPager ('ListPager') === FALSE)
{
    $orm = $this->getMapper();
    $BookCrit = new GenericCriterionObject();
    $BookCrit->addOrderIndicator('Date', 'DESC');
    $BookList = $orm->loadObjectListByCriterion('Books', $BookCrit);
    
    // Lädt den Pager als fertige HTML-Ausgabe
    $oAPM->registerPager ('ListPager', $BookList);
    $HTMLOutput = $oAPM->getPager('ListPager');
    $this->setPlaceHolder('Pager', $HTMLOutput);
    $DataList = $oAPM->loadEntries('ListPager');
} 
Das wiederum klappt gar nicht.

Selbst wenn ich es wie folgt mache:

Code: Alles auswählen

if ($oAPM->checkPager ('ListPager') === FALSE)
{
    $orm = $this->getMapper();
    $BookCrit = new GenericCriterionObject();
    $BookCrit->addOrderIndicator('Date', 'DESC');
    $BookList = $orm->loadObjectListByCriterion('Books', $BookCrit);
    
    // Lädt den Pager als fertige HTML-Ausgabe
    $oAPM->registerPager ('ListPager', $BookList);
    $HTMLOutput = $oAPM->getPager('ListPager');
    $DataList = $oAPM->loadEntries('ListPager');
} else{
    $HTMLOutput = $oAPM->getPager('ListPager');
    $DataList = $oAPM->loadEntries('ListPager');
}
    $this->setPlaceHolder('Pager', $HTMLOutput); 
So erhalte ich zwar die Pager-Navigation und die ersten Datensätze - allerdings kann ich bei der Navigation nicht durchklicken, da sie nur eine Seite anzeigt.

Benutzeravatar
MrNiceGuy
Beiträge: 749
Registriert: 03.02.2009, 16:49:42
Wohnort: Nienburg / Weser

Re: ArrayPager

Beitrag von MrNiceGuy » 23.10.2011, 13:02:54

Ups - ja klar, der Code für die Ausgabe muss natürlich unterhalb des IF-Blocks stehen.

Es klappt vorher, aber wenn du die Initialisierung nicht durchführst (registerPager()), erhälst du nur einen Pager mit einer Seite? Aber die Daten wären die Richtigen oder wie?
There are only 10 Types of people in the world:
Those who understand binary and those who don't.

Benutzeravatar
MrNiceGuy
Beiträge: 749
Registriert: 03.02.2009, 16:49:42
Wohnort: Nienburg / Weser

Re: ArrayPager

Beitrag von MrNiceGuy » 23.10.2011, 13:47:04

Also, ich habe mich gerade mal eines kleinen Tests angenommen und dabei folgendes herausgefunden:

Der SessionManager hat in der Methode loadSessionData() eine Änderung erfahren (irgendwann in 2010 bereits), durch die die zurückgelieferten Daten bei Nichtvorhandensein nicht mehr FALSE sind sondern NULL - solange nicht mit dem optionalen Parameter etwas anderes gesagt wird. Die Methoden innerhalb des ArrayPager arbeiten allerdingst mit einem Vergleich "=== FALSE" an der entsprechenden Stelle. Das habe ich in den Versionen 1.14 und 1.15 im SVN upgedatet, entsprechend solltest du dir hier einmal ein Update ziehen.

Desweiteren sieht mein Testaufbau wie folgt aus:

sites::testpage::pres::templates - Test.html

Code: Alles auswählen

<@controller
  namespace="sites::testpage::pres::controller"
  class="Test"
  @>
<div id="source"><html:placeholder name="Source" /></div>
<div id="pager"><html:placeholder name="Pager" /></div>
<div id="data"><html:placeholder name="Data" /></div> 
sites::testpage::pres:controller - Test.php

Code: Alles auswählen

<?php
class Test extends base_controller
{
  public function transformContent ()
  {
    $oAPMF = $this->getServiceObject
      ( 'extensions::arraypager::biz',
        'ArrayPagerManagerFabric'
       );
    $oAPM = $oAPMF->getArrayPagerManager ('PagerTest');

    if ($oAPM->checkPager ('PagerTest') === FALSE
    OR  $oAPM->checkPage  ()            === FALSE
        )
    {
      $aData = array
        ( 'Title1' => 'Buch 1',
          'Title2' => 'Buch 2',
          'Title3' => 'Buch 3',
          'Title4' => 'Buch 4',
          'Title5' => 'Buch 5',
          'Title6' => 'Buch 6',
          'Title7' => 'Buch 7',
          'Title8' => 'Buch 8',
          'Title9' => 'Buch 9',
         );

      $oAPM->registerPager
        ( 'PagerTest',
          $aData
         );

      $this->setPlaceHolder
        ( 'Source',
          'Array'
         );
    }
    else
    {
      $this->setPlaceHolder
        ( 'Source',
          'Session'
         );
    }

    $this->setPlaceHolder
      ( 'Pager',
        $oAPM->getPager ('PagerTest')
       );

    $aDataPager = $oAPM->loadEntries ('PagerTest');

    $this->setPlaceHolder
      ( 'Data',
        var_export ($aDataPager, TRUE)
       );
  }
} 
Config-File

Code: Alles auswählen

[PagerTest]
Pager.DesignNamespace = "extensions::arraypager::pres::templates"
Pager.DesignTemplate = "arraypager"
Pager.Entries = "2"
Pager.EntriesChangeable = "true"
Pager.ParameterPage = "page"
Pager.ParameterEntries = "entries"
Pager.EntriesPossible = "2|4|6"
Wenn ich das Template "Test" aufrufe erfolgt die Ausgabe wie gewünscht - nachdem ich den "Fehler" durch den SessionManager angepasst habe. Die Ausgabe der Quelle zeigt dir dann, ob er die Daten aus dem Array oder aus der Session geholt hat, der Pager hilft dir die Navigation zu testen und var_export zeigt dir die zurückgelieferten Daten an.

Teste das nach dem angesprochenen SVN-Update einmal und gib bitte ein Feedback, ob es nun geht wie gewünscht :)

LG
Lutz
There are only 10 Types of people in the world:
Those who understand binary and those who don't.

Benutzeravatar
ma2604121
Beiträge: 349
Registriert: 24.01.2011, 23:42:18

Re: ArrayPager

Beitrag von ma2604121 » 25.10.2011, 13:36:09

Jetzt funktioniert der ArrayPager einwandfrei und ich kann die Begeisterung hierfür durchaus nachvollziehen!! :D
Vielen Dank für Deine Mühe!

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste