Seite 2 von 3

Re: [ArrayPager]

Verfasst: 01.04.2011, 08:35:54
von dr.e.
Gerne. Für sowas lohnt sich der kurze Blick in den Quellcode des betreffenden Service immer.

Re: [ArrayPager]

Verfasst: 01.04.2011, 13:58:34
von Megger
Der ArrayPagerManagerFabric muss nicht per getAndInitServiceObject initialisiert werden. Das Problem ist die init-Methode vom ArrayPagerManager (der wird ja per getAndInitServiceObject bezogen), das auslesen der Config ist fehlerhaft und so sind nur die Standardeinträge vorhanden.

Re: [ArrayPager]

Verfasst: 01.04.2011, 17:53:51
von dave
Megger hat geschrieben:Der ArrayPagerManagerFabric muss nicht per getAndInitServiceObject initialisiert werden. Das Problem ist die init-Methode vom ArrayPagerManager (der wird ja per getAndInitServiceObject bezogen), das auslesen der Config ist fehlerhaft und so sind nur die Standardeinträge vorhanden.
Jup, das kann ich so bestätigen. Scahde, ich dachte, es wäre doch so einfach ;) ...

ArrayPagerManager.php:

Code: Alles auswählen

    public function init ($stringParameter) {
         // initialize the config
         $config = $this->getConfiguration ('extensions::arraypager',
                 'arraypager.ini'
         );
         
         // remap configuration
         $configParams = array();
         foreach($config->getValueNames() as $name) { //<------------ getValueNames() macht Probleme!
            $configParams[$name] = $config->getValue($name);
         }
         
         $arrayParameter = array(
             'Pager.ParameterPage' => 'page',
             'Pager.ParameterEntries' => 'entries',
             'Pager.Entries' => 10,
             'Pager.EntriesPossible' => '5|10|15'
         );

         $this->__PagerConfig = array_merge ($arrayParameter,$configParams);

         if (isset ($this->__PagerConfig['Pager.EntriesChangeable']) === TRUE
                 AND $this->__PagerConfig['Pager.EntriesChangeable']         ==  'true'
         ) {
            $this->__PagerConfig['Pager.EntriesChangeable'] = TRUE;
         }
         else {
            $this->__PagerConfig['Pager.EntriesChangeable'] = FALSE;
         }

         $this->__PagerConfig['Pager.Entries'] = intval ($this->__PagerConfig['Pager.Entries']);
      }
 
Und wie Megger sagte, sind später die beiden Werte, die ich benötige, nicht Standard-mässig vorbelegt. Ich füge die dort mal per Hand ein ...

Re: [ArrayPager]

Verfasst: 01.04.2011, 18:01:53
von Megger

Code: Alles auswählen

foreach($config->getValueNames() as $name) { //<------------ getValueNames() macht Probleme!
            $configParams[$name] = $config->getValue($name);
         }
ersetzen durch

Code: Alles auswählen

$section = $config->getSection($initParam);
      if($section===null) {
          throw new Exception('[ArrayPagerManager::init()] No section
              with name "'.$initParam.'" in arraypager.ini');
      } else {
          foreach($section->getValueNames() as $name) {
              $configParams[$name] = $section->getValue($name);
          }
      }

Re: [ArrayPager]

Verfasst: 01.04.2011, 18:13:34
von dave
Jup, passt! Es war noch ein kleiner Fehler drin. Als Variable nicht $initParam sondern $stringParameter. Herzlichen Dank!

@ Christian: Wie siehts mit einer Aktualisierung fürs 1.14 aus? Wäre ja schon gut, wenn die mitgelieferten Extensions fehlerfrei liefen ;)

Re: [ArrayPager]

Verfasst: 01.04.2011, 18:29:57
von Megger
Also bei mir ist es $initParam (habe Version 1.14 gestern oder vorgestern ausgecheckt)

Re: [ArrayPager]

Verfasst: 01.04.2011, 18:34:35
von dave
Ok, dann scheint es zwischendrin geändert worden zu sein. Meine APF-Version ist noch recht "alt". Ich ziehe nicht ständig die aktuellen Ressourcen, das ist mir teilweise zu unheimlich. Da warte ich auf das offizielle 1.14 Release und kümmere mich dann drum.

Ausserdem weiss ich einfach nicht, wie das mit dem "auschecken" ist. Das ist doch auch dieses SVN, aber das übersteigt meinen Horizont im moment ;).

Re: [ArrayPager]

Verfasst: 01.04.2011, 19:18:09
von Megger
Wenn ich es für ein Projekt brauche, dann lade ich es mir so runter
http://adventurephpfra.svn.sourceforge. ... php5/1.14/ und dann unten auf Download GNU tarball

Aber wenn es jetzt bei dir funktioniert, dann ist doch alles super. Werde später die 1.14 Version fixen

@Christian:
Ist das ok so mit der Exception? Oder sollte man in der init Methode keine Exception werfen?

Re: [ArrayPager]

Verfasst: 01.04.2011, 19:47:54
von dr.e.
Hallo Tobi,

danke für die Analyse, ich hatte geistig völlig ignoriert, dass der PagerManager über eine Factory bezogen wird. :oops: Nachdem ich jetzt mal wirklich 5Min Ruhe hatte, hab ich mir den Fehler angesehen und deine Analyse ist absolut korrekt - der Fix ebenso. Ich habe diesen direkt eingebaut, die Exception noch ein bischen aufgehübscht und die restlichen trigger_error() auch durch Exceptions ersetzt.
Oder sollte man in der init Methode keine Exception werfen?
Na da erst recht. In der Entwicklung sollte immer "die early and hard" gelten, sprich solche grundlegenden Fehler müssen sofort zum Abbruch führen. Ohne Config ist das relativ Spass-befreit. :)

@dave: sofern du noch nicht die Version 1.13 nutzt würde ich an deiner Stelle dringend updaten. Das neue ArrayPager-Paket kannst du hier herunterladen.

Re: [ArrayPager]

Verfasst: 01.04.2011, 20:00:02
von dave
dr.e. hat geschrieben:@dave: sofern du noch nicht die Version 1.13 nutzt würde ich an deiner Stelle dringend updaten. Das neue ArrayPager-Paket kannst du hier herunterladen.
Doch doch, die 1.13 nutze ich schon. Nur eben die halb gfertige 1.14 noch nicht ;). Und ich weiss auch schon, warum ich mich bisher davor gescheut habe:
Call to undefined method ArrayPagerManagerFabric::getAndInitServiceObject()
Bisher habe ich es immer so gemacht:

Code: Alles auswählen

__getAndInitServiceObject() 
Habe erstmal alles wieder auf __xx umgeschrieben. Das kann ja ein Spass werden zum 1.14 :D

Re: [ArrayPager]

Verfasst: 01.04.2011, 20:15:02
von dr.e.
Ach mist, das hatte ich vergessen. In 1.14 wurde das refactored und funktioniert bei einem konsistenten Stand von 1.14 auch richtig. Wenn du natürlich 1.14er Pakete in 1.13 verwendest, gibt's exakt den Fehler. Ich schlage vor, du fügst einfach noch zwei Unterstriche hinzu, dann klappts. Und Ehrenwort: 1.14 wird gut (ist es auch jetzt schon, hab das auf der Webseite schon im Einsatz), es ist aber trotzdem noch irgendwas zwischen alpha und beta. :)

Re: [ArrayPager]

Verfasst: 01.04.2011, 20:21:22
von dave
Klaro, das APF ist jetzt schon Spitze! Deswegen nutze ich es ja auch! ;)

Die Unterstriche sind schon drin ... war ja nicht das Thema. Könnte nur beim Umstellen von 1.13 auf 1.14 etwas mehr Arbeit werden.

Re: [ArrayPager]

Verfasst: 01.04.2011, 20:23:02
von Megger
Mit dem Migrations Wiki Artikel und Search&Replace war das bei mir nicht das Thema, hat nicht viel Zeit gekostet und läuft stabil. Außerdem sind Bugs schnell gefixt

Re: [ArrayPager]

Verfasst: 01.04.2011, 20:27:04
von dave
Ok, das klingt ja dann gar nicht so schlecht. Bin am überlegen, jetzt schonmal ein erstes Update zu machen oder wirklich bis zum Release zu warten.

Re: [ArrayPager]

Verfasst: 01.04.2011, 21:11:07
von dr.e.
Soweit ich das im Überblick habe, sind die größten Anpassungen schon durch (Front-Controller, Filter, GORM). Hinzu kommen jetzt nur noch "Kleinigkeiten". Und wenn's nicht klappt, ist wie Tobi schon sagt, der Bug schnell gefixt.