חיפוש
נסה את זה
שדה אחד, כל סוגי התוצאות. שמות העמודים מגיעים מהנתב ואינם דורשים הצהרה; רשומות מגיעות מהיישויות הנושאות את המאפיין למטה. כל תוצאה נושאת את היעד שלה, כך שהשורה אינה צריכה להחליט מה המשמעות של לחיצה.
ספקים
ספק הוא משפחה אחת של דברים שניתן למצוא. יישום הממשק הוא כל ההרשמה — תיוג אוטומטי מסמן זאת, כך שספק שנכתב ביישום מצטרף לחיפוש על ידי קיום. אלו הם הספקים שעונים כאן, לפי השם שהשאילתה מגבילה את עצמה אליו.
-
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);
}
}
יישויות ניתנות לחיפוש
המחלקה אומרת שישות ניתנת למציאה; המאפיינים שלה אומרים על מה, כל אחד עם הסוג שלו — כותרת נקראת, כמות היא מספר, כתובת היא שלמה או לא כלום — והסוג קובע גם את ה-SQL וגם את הנקודות. שישה מתוך שבעת פונקציות הניקוד של המורשת היו אותה רשימה בתחפושת. השביעי היה בעל היגיון, וזה אחד שנקרא כיתת ניקוד; הישות whose answer depends on who is asking מוסיפה provider: true ומקבלת ספק משלה.
-
contact
Wexample\SymfonyOrganization\Entity\Contact
שדות : name (text), email (email) -
demo_message
Wexample\SymfonyDesignSystemDemo\Entity\DemoMessage
שדות : body (text, 5) -
demo_room
Wexample\SymfonyDesignSystemDemo\Entity\DemoRoom
שדות : name (text) -
demo_user
Wexample\SymfonyUserDemo\Entity\DemoUser
שדות : email (email), username (text), firstName (text), lastName (text) -
organization
Wexample\SymfonyOrganization\Entity\Organization
שדות : 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;
}
ה-API
תוצאה היא ישות, כך שהנקודה שלה היא האוסף של אותה ישות ושום דבר נוסף. מאגר ה-TypeScript שנוצר מאותה מחלקת PHP קורא לה מבלי שיגידו לו היכן היא — מה שהשדה למעלה משתמש בו.
פרמטרי שאילתה
- search
מה מחפשים. שאילתה ריקה לא עונה על כלום ולא על הכל.
- context
מאיפה מתבצע החיפוש, מה שמחליט מה היא עשויה לענות. הקשרים שנשלחו : default, header, form_field
- type
מגביל את התשובה לסוג אחד — שם ישות, או מפתח ספק.
- length
כמה תוצאות. בהיעדרן, קונפיגורציית החבילה מחליטה.
curl "/api/search-result/list?search=dupont&context=header&length=5"
תרגומים
השורה קוראת את התוויות שלה מהארבעה צדדים של הרכיב, כך שאין מקום למילוי בשפה. כותרות התוצאות, לעומת זאת, מגיעות מהרשומה עצמה או משם הנתיב — תרגום שלהם עוד לא מחובר, ועכשיו עמוד מציג את שם הנתיב בצורה אנושית.
# assets/components/search-bar.fr.yml
placeholder: Rechercher...
empty: Aucun résultat.
pending: Recherche en cours...