54 Nachrichten unter 19 Themen von 27 Mitgliedern
[SilverStripe Roadmap][Changelog]

Dataobjects: Frontend Suche

Seite: 1 1807 mal gelesen
  • techgyver
    techgyver Community Member
    2 Beiträge

    Dataobjects: Frontend Suche

    Hallo Striper,

    ich versuche momentan eine Suchfunktion für Dataobjects zu entwickeln, die dem Frontend-User zumutbar ist.
    Die Suchfunktion des Generic Views Modul ist gut gemeint, aber eher für eine "erweiterte Suche" sinnvoll.

    Als Beispiel:

    class Buch extends Dataobject
    {
    static $db = array (
    "Titel" => "Varchar",
    "Verlag" => "Varchar",
    "Jahr" => "Date",
    "Synopisis" => "Text"
    );
    static $has_one = array(
    "Autor" => "Author"
    );
    […]

    static $searchable_fields = array(
    'Autor.Name' => "PartialMatchFilter",
    'Titel' => "PartialMatchFilter",
    'Verlag' => "PartialMatchFilter",
    'Jahr' => "PartialMatchFilter",
    'Synopsis' => "FulltextFilter"
    );
    […]
    }
    Meine Frage ist: Wie kann ich die Generic Views Suchfunktion so umstricken, dass ich nur ein Eingabefeld habe mit dem, die im Dataobject deklarierten, Felder durchsucht werden. Dass das in einer Methode des BuchControllers passiert ist klar.
    Prinzipiell weiss ich auch, dass es im die folgenden Zeilen geht:

    public function SearchForm()
    {
       $context = singleton($this->modelClass)->getDefaultSearchContext();
       $fields = $context->getSearchFields();
       $form = new Form($this, "SearchForm",
    […]
    }

    sowie

    public function results($data,$form)
    {
       $context = singleton($this->modelClass)->getDefaultSearchContext();
       $results = $context->getResults($data);
       $searchQueryTitle = $form->getSearchQuery($data);   
       […]
    }

    geht.

    Oder ist mein Ansatz falsch?

Zur Zeit online: Zur Zeit ist leider niemand online.

Wir begrüßen unsere neuen Mitglieder: besteschoenen