[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