WCF 2 Programmier-Tutorials - Übersicht

  • blog\data\entry\EntryAction::create()

    PHP
    // update search index
    SearchIndexManager::getInstance()->add('com.woltlab.blog.entry', $entry->entryID, $entry->message, $entry->subject, $entry->time, $entry->userID, $entry->username, $entry->languageID);

    Ich denke mal, diesen Code-Teil zu finden (Strg + F und dann search eingeben) und ihn anschließend zu verstehen entspricht dem Schwierigkeitsgrad Zip-File entpacken :D

    scheint leider nicht so einfach zu sein. es sind ja scheinbar einige objekte und xml dateien nötig um in die suchfunktion rein zu kommen. und selbst wenn ich das, mmn richtig gemacht habe, ist die suchseite leer(zwar steht dort eine anzahl gefundener objekte, aber diese werden nicht angezeigt)

    ich denke also sehr wohl dass dafür ein ausführliches tutorial nötig ist (vill anhang eines produktkatalogs, in dem die artikel weder subject, userid noch message besitzen)

    Entwicklung und Design moderner Webapplikationen

    kostenloser Support • Vorschläge teilen • Plugins kaufen

    Darkwood.Design

  • jap das weiß ich.

    ich möchte dass neu angelegte 'Produkte' über die Suchfunktion durchsucht werden können. Beim create() des Produkts wird dafür über den SearchIndexManager ein neuer search_index angelegt. einen entsprechenden Objektype dafür sowie die SearchResult Klassen habe ich ebenfalls angelegt.Wenn ich nun nach einem Produkt suche, sagt er mir auch dass ein Produkt gefunden wurde. die Liste darunter ist allerdings Leer, so dass nirgends das gefundene Produkt gezeigt wird....

    hab echt kein Plan wo der Fehler sein könnte, da ich ja bei einigen Plugins bereits gut abgeschaut habe.

    Entwicklung und Design moderner Webapplikationen

    kostenloser Support • Vorschläge teilen • Plugins kaufen

    Darkwood.Design

  • Dann überprüfe nochmals die Implementierung der Methode wcf\system\search\ISearchableObjectType::cacheObjects() und wcf\system\search\ISearchableObjectType::getObject(), da wird sich wahrscheinlich der Fehler befinden.

    hab nochmal alles durchgeschaut und konnte keinen fehler entdecken :/ glaub ich schreib das alles mal nochmal neu. gut wär da allerdings schon eine kleine anleitung von jemanden der das schon gemacht hat...

    Entwicklung und Design moderner Webapplikationen

    kostenloser Support • Vorschläge teilen • Plugins kaufen

    Darkwood.Design

  • Zeig doch mal ein wenig Code :)

    hier mal meine ObjectSearch.class vielleicht fällt hier ja schon was auf...

    Entwicklung und Design moderner Webapplikationen

    kostenloser Support • Vorschläge teilen • Plugins kaufen

    Darkwood.Design

    • Offizieller Beitrag

    Hinweis: Das Problem ist, dass getObject() immer null zurückliefert, in solchen Fällen empfiehlt es sich dann mal zu schauen, was überhaupt im $this->messageCache-Array drin ist.

    Dein konkretes Problem ist die folgende Zeile: $this->messageCache[$entry->entryID] = $entry;. Das ID-Feld Deiner Supplement-Objekte heißt supplementID, nicht entryID.

  • danke für den Hinweis mit dem ID-Feld, ist behoben.

    $this->messageCache wird aber leider nicht befüllt (null) da $entryList->getObjects() ebenfalls nichts zurück liefert :|

    Entwicklung und Design moderner Webapplikationen

    kostenloser Support • Vorschläge teilen • Plugins kaufen

    Darkwood.Design

  • hier mal noch die beiden anderen relevanten klassen, vielleicht fällt hier ja was auf...

    Entwicklung und Design moderner Webapplikationen

    kostenloser Support • Vorschläge teilen • Plugins kaufen

    Darkwood.Design

  • Hast du mal getestet ob deine Liste überhaupt Ergebnisse liefert? Also einfach mal auf einer externen Seite:

    PHP
    $entryList = new SearchResultSupplementList();
    
    
    
    
    		$entryList->getConditionBuilder()->add('supplements.supplementID IN (?)', array($objectIDs));
    		$entryList->readObjects();
            die(print_r($entryList));
  • Zwei andere Dinge:

    • Wieso ist SearchResultSupplement eine abstrakte Klasse?
    • SearchResultSupplement::getSupplement() ist unnötig, einfach das SearchResultSupplement direkt verwenden oder, falls wirklich ein Supplement-Objekt benötigt wird: SearchResultSupplement::getDecoratedObject().

    1. bekomme sonst folgenden Fehler: SearchResultSupplement is nit abstract and does not override abstract method getLink() in ISearchResultObject

    2. und wo bekommt er dann die daten (name etc.) her?

    @Christopher Walz
    liefert wohl auch kein ergebnis

    Entwicklung und Design moderner Webapplikationen

    kostenloser Support • Vorschläge teilen • Plugins kaufen

    Darkwood.Design

  • 1. ok habs jetzt so gemacht wie du gesagt hast, die klasse ist nun nichtmehr abstract. die liste wird jetzt auf einer neutralen seite auch geladen und mit objekten befüllt. schonmal ein teilerfolg^^

    die suchergebnisliste ist aber immernoch leer :/

    Entwicklung und Design moderner Webapplikationen

    kostenloser Support • Vorschläge teilen • Plugins kaufen

    Darkwood.Design

  • Gibt es eigentlich einen ZendStudio Export des von WL zum Entwickeln benutzten Code-Styles? Ich weiß, das irgendwo die Details rumstehen, ich glaub auch das irgendwo mal ein solcher Export angehängt wurde, finds aktuell aber nicht. ;)
    Cool fände ich ja, wenn das mit ins Git gepackt würde, @Alexander Ebert ... :D

    Support gibts (auch ohne Anmeldung) in meinem Forum, nicht per eMail, PN, ICQ, Skype, etc.

  • Danke!
    Welche Version verwendet ihr denn? Ich bin auf ZendStudio 10, da kann man im Code-Style Formatter-Tab nur noch xml-Dateien importieren. ;)

    Support gibts (auch ohne Anmeldung) in meinem Forum, nicht per eMail, PN, ICQ, Skype, etc.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!