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