ค้นหา
ลองใช้งาน
ฟิลด์เดียว ผลลัพธ์ทุกประเภท ชื่อหน้ามาจากตัวกำหนดเส้นทางและไม่ต้องมีการประกาศ; บันทึกมาจากเอนทิตีที่มีแอตทริบิวต์ด้านล่าง ผลลัพธ์แต่ละรายการมีการระบุทิศทางที่จะไป ดังนั้นแถบจึงไม่ต้องตัดสินใจเกี่ยวกับความหมายของการคลิก
ผู้ให้บริการ
ผู้ให้บริการคือกลุ่มของสิ่งที่ค้นหาได้ การดำเนินการตามอินเทอร์เฟซคือการลงทะเบียนทั้งหมด — การตั้งค่าอัตโนมัติทำให้มันเกิดขึ้น ดังนั้นผู้ให้บริการที่เขียนในแอปพลิเคชันจึงเข้าร่วมการค้นหาโดยการมีอยู่ สิ่งเหล่านี้คือผู้ที่ตอบสนองที่นี่ โดยชื่อที่มีการจำกัดการค้นหาอยู่
-
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 และคะแนน หกในเจ็ดฟังก์ชันการให้คะแนนของมรดกคือรายการนั้นในคราบแอบแฝง สาเหตุที่เจ็ดคือการให้เหตุผล และอันนั้นชื่อว่าคลาสการให้คะแนน; เอนทิตีที่คำตอบขึ้นอยู่กับผู้ที่ถามจะเพิ่มผู้ให้บริการ: 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...