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" <m...@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" <m...@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@lists.typo3.org >>http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german > > >_______________________________________________ >TYPO3-german mailing list >TYPO3-german@lists.typo3.org >http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german _______________________________________________ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german