Suche

Suche

Ausprobieren

Ein Feld, jede Art von Ergebnis. Seitennamen stammen vom Router und benötigen keine Deklaration; Datensätze kommen von den Entitäten, die das untenstehende Attribut tragen. Jedes Ergebnis zeigt, wohin es führt, sodass die Leiste nichts über die Bedeutung eines Klicks entscheiden muss.

Anbieter

Ein Anbieter ist eine Familie von auffindbaren Dingen. Die Implementierung der Schnittstelle ist die gesamte Registrierung – die Autokonfiguration kennzeichnet ihn, sodass ein in einer Anwendung geschriebener Anbieter durch seine Existenz der Suche beitritt. Dies sind die, die hier antworten, durch den Namen, auf den sich eine Abfrage einschränkt.

  • entity

    Wexample\SymfonySearch\Class\Provider\EntitySearchProvider

  • route

    Wexample\SymfonySearch\Class\Provider\RouteSearchProvider

class CommandSearchProvider extends AbstractSearchProvider
{
    public function provide(SearchQuery $query): iterable
    {
        // yield $this->createResult($reference, $title)->setScore($score);
    }
}

Durchsuchbare Entitäten

Die Klasse sagt, dass eine Entität auffindbar ist; ihre Eigenschaften sagen, wonach, jede mit ihrer Art – ein Titel wird gelesen, eine Menge ist eine Zahl, eine Adresse ist ganz oder nichts – und die Art entscheidet sowohl über das SQL als auch über die Punkte. Sechs der sieben Bewertungsfunktionen des Erbes waren diese Liste im Verborgenen. Der siebte argumentierte, und dieser nennt eine Bewertungsgruppe; die Entität, deren Antwort davon abhängt, wer fragt, fügt provider: true hinzu und erhält einen eigenen Anbieter.

  • contact

    Wexample\SymfonyOrganization\Entity\Contact
    Felder : name (text), email (email)

  • demo_message

    Wexample\SymfonyDesignSystemDemo\Entity\DemoMessage
    Felder : body (text, 5)

  • demo_room

    Wexample\SymfonyDesignSystemDemo\Entity\DemoRoom
    Felder : name (text)

  • demo_user

    Wexample\SymfonyUserDemo\Entity\DemoUser
    Felder : email (email), username (text), firstName (text), lastName (text)

  • organization

    Wexample\SymfonyOrganization\Entity\Organization
    Felder : name (text), vatNumber (text), legalIdentifier (text), email (email)

#[ORM\Entity]
#[Searchable(route: 'app_invoice_show')]
class Invoice extends AbstractEntity
{
    #[SearchText]
    protected string $label;

    #[SearchAmount(points: 40)]
    protected float $priceTotal;
}

Die API

Ein Ergebnis ist eine Entität, daher ist sein Endpunkt die Sammlung dieser Entität und nichts anderes. Das TypeScript-Repository, das aus derselben PHP-Klasse generiert wurde, ruft es auf, ohne gesagt zu bekommen, wo es sich befindet – genau das verwendet das obige Feld.

Abfrageparameter

  • search

    Wonach gesucht wird. Eine leere Abfrage ergibt nichts statt alles.

  • context

    Von wo die Suche ausgeführt wird, was entscheidet, was sie beantworten kann. Gelieferte Kontexte : default, header, form_field

  • type

    Beschränkt die Antwort auf eine Art – einen Entitätsnamen oder einen Anbieter-Schlüssel.

  • length

    Wie viele Ergebnisse. Abwesend entscheidet die Bundle-Konfiguration.

/api/search-result/list
curl "/api/search-result/list?search=dupont&context=header&length=5"

Übersetzungen

Die Leiste liest ihre eigenen Bezeichnungen von den vier Seiten der Komponente, sodass ein Platzhalter niemals im Markup geschrieben wird. Die Ergebnistitel hingegen stammen entweder aus dem Datensatz selbst oder vom Routenamen – das Übersetzen dieser ist noch nicht implementiert, und eine Seite zeigt derzeit ihren Routenamen in menschenlesbarer Form an.

# assets/components/search-bar.fr.yml
placeholder: Rechercher...
empty: Aucun résultat.
pending: Recherche en cours...