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.
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...