[TYPO3-german] Repository gibt NULL zurück bei mehrfacher Einbindung

Moritz Mädler mail at moritz-maedler.de
Thu Jul 19 07:58:09 CEST 2012


Guten morgen,

nochmals ein Update. Nachdem ich gestern ja die Queries debugged hatte,
ist mir
in den Sinn gekommen, einmal zu schauen, ob die StoragePid in den
Plugin-Einstellungen
gesetzt ist - das war sie nicht und somit erklärt sich auch die Suche nach
pid = 0.

Nachdem ich nun das DataFolder in den Plugin-Einstellungen hinzugefügt
habe, funktioniert
alles wie erwartet.
Ich hatte zwar in den Extension-Constants die storagePid angegeben,
allerdings scheint dies nicht
auszureichen.

Viele Grüße,

Moritz





On 18.07.12 19:56, "Moritz Mädler" <mail at moritz-maedler.de> wrote:

>Hallo zusammen!
>
>Ein kurzes Update zu dem Thema:
>
>Ich habe mir einmal die Queries angeschaut, die bei Seitenaufruf
>ausgeführt werden
>und habe dabei festgestellt, dass sich diese wie folgt unterscheiden:
>
>Query für das erste Plugin (Hauptkategorie):
>---------
> SELECT  tx_mmdevfos_domain_model_type.* FROM
>tx_mmdevfos_domain_model_type  WHERE tx_mmdevfos_domain_model_type.uid =
>'2' AND tx_mmdevfos_domain_model_type.deleted=0 AND
>tx_mmdevfos_domain_model_type.t3ver_state<=0 AND
>tx_mmdevfos_domain_model_type.pid<>-1 AND
>tx_mmdevfos_domain_model_type.hidden=0 AND
>tx_mmdevfos_domain_model_type.starttime<=1342633680 AND
>(tx_mmdevfos_domain_model_type.endtime=0 OR
>tx_mmdevfos_domain_model_type.endtime>1342633680) AND
>tx_mmdevfos_domain_model_type.sys_language_uid IN (0,-1) AND
>tx_mmdevfos_domain_model_type.pid IN (10) LIMIT 1
>---------
>
>und für das zweite Plugin (Hauptkategorie):
>---------
>SELECT tx_mmdevfos_domain_model_type.* FROM tx_mmdevfos_domain_model_type
>WHERE tx_mmdevfos_domain_model_type.uid = '2' AND
>tx_mmdevfos_domain_model_type.deleted=0 AND
>tx_mmdevfos_domain_model_type.t3ver_state<=0 AND
>tx_mmdevfos_domain_model_type.pid<>-1 AND
>tx_mmdevfos_domain_model_type.hidden=0 AND
>tx_mmdevfos_domain_model_type.starttime<=1342632960 AND
>(tx_mmdevfos_domain_model_type.endtime=0 OR
>tx_mmdevfos_domain_model_type.endtime>1342632960) AND
>tx_mmdevfos_domain_model_type.sys_language_uid IN (0,-1) AND
>tx_mmdevfos_domain_model_type.pid IN (0) LIMIT 1
>---------
>
>
>Wie zu sehen, wird bei der zweiten Abfrage auf "pid IN (0)" abgefragt,
>statt (wie bei der ersten)
>auf "pid IN (10)".
>Die page-ID geht also verloren, was ich mir nicht erklären kann, da die
>Einbinden exakt die gleiche ist.
>Ist euch ähnliches bekannt bzw. kann ich einen Workarround schreiben?
>
>Vielen Dank!
>
>Moritz
>
>
>
>
>
>On 16.07.12 10:28, "Moritz Mädler" <mail at moritz-maedler.de> wrote:
>
>>Hallo zusammen!
>>
>>Ich bastele gerade an meiner ersten extbase-Extension die einen
>>Produktkatalog abbildet.
>>Zur Funktionsweise:
>>Die Extension ist als FE-Plugin über das Backend einzubinden - dabei
>>können die Haupt- und die Subkategorie gesetzt werden, auf deren Basis
>>dann die Produkte mit ebendieser Haupt/Sub-Kategorie im FE angezeigt
>>werden. Der Controller bekommt also aus dem Backend zwei DB-Ids
>>übergeben,
>>die ich dann an das TypeRepository weitergebe, um mir die dazugehörigen
>>Kategoriedatensätze zurückgeben zu lassen. Diese übergebe ich dann an das
>>OfferRepository, dass mir die passenden Produkte zu diesen Datensätzen
>>zurückgibt.
>>Das Ganze funktioniert auch soweit prima, allerdings verlangt das Design,
>>dass ich das FE-Plugin [b]mehrfach pro Seite[/b] einbinde. Sobald ein
>>zweites FE-Plugin auf der Seite eingebunden ist, erhalte ich (trotz im
>>Backend korrekt gesetzter Haupt-/Subkategorie) folgende Exception:
>>
>>----------------
>>PHP Catchable Fatal Error: Argument 1 passed to
>>Tx_MmdevFos_Domain_Repository_OfferRepository::findFiltered() must be an
>>instance of Tx_MmdevFos_Domain_Model_Type, null given,
>>----------------
>>
>>
>>Ich konnte das nun soweit nachvollziehen, dass beim zweiten Abfragen des
>>TypeRepositorys NULL zurückkommt - was mir ein Rätsel ist.
>>
>>Ist es möglich, dass bei der ersten Abfrage das Ergebnis gecached wird
>>und
>>es somit bei der zweiten Abfrage kein Ergebnis mehr liefert?
>>Gibt es eine Möglichkeit sich die im Repository ausgeführten Queries
>>anzeigen zu lassen, so dass ich einmal schauen kann, was da wirklich an
>>die DB geschickt wird?
>>
>>Vielen Dank!
>>
>>
>>PS: Hier noch der Code des Controllers:
>>-----------------
>>/**
>>     * action to show a filtered list
>>     *
>>     * @param Tx_MmdevFos_Domain_Model_Type $maintype
>>     * @param Tx_MmdevFos_Domain_Model_Type $subtype
>>     * @param Tx_MmdevFos_Domain_Model_Type $category
>>     * @return void
>>    */
>>    public function filteredListAction( Tx_MmdevFos_Domain_Model_Type
>>$maintype = NULL,
>>                                        Tx_MmdevFos_Domain_Model_Type
>>$subtype = NULL) {
>>
>>       // instantiate typeRepository
>>       $typeRepository =
>>t3lib_div::makeInstance('Tx_MmdevFos_Domain_Repository_TypeRepository');
>>
>>       // check if args where null - if yes try to fetch from backendconf
>>       if ($maintype == NULL && $subtype == NULL) {
>>//           $maintype =
>>$this->typeRepository->findOneByUid((int)$this->settings['maintype']);
>>//           $subtype =
>>$this->typeRepository->findOneByUid((int)$this->settings['subtype']);
>>           $maintype =
>>$typeRepository->findOneByUid((int)$this->settings['maintype']);
>>           $subtype =
>>$typeRepository->findOneByUid((int)$this->settings['subtype']);
>>       }
>>        
>>       $filteredOffers = $this->offerRepository->findFiltered($maintype,
>>$subtype);
>>
>>       $categories = array();
>>       foreach($filteredOffers as $offer) {
>>           if( !in_array(array_keys($categories),
>>$offer->getCategory()->getUid())){
>>               $categories[$offer->getCategory()->getUid()] =
>>$offer->getCategory();
>>           }
>>       }
>>
>>       $this->view->assign('categories', array_values($categories));
>>       $this->view->assign('offer_count', count($filteredOffers));
>>       $this->view->assign('offers', $filteredOffers);
>>    }
>>
>> 
>>
>>
>>_______________________________________________
>>TYPO3-german mailing list
>>TYPO3-german at lists.typo3.org
>>http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>
>
>_______________________________________________
>TYPO3-german mailing list
>TYPO3-german at lists.typo3.org
>http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german




More information about the TYPO3-german mailing list