ค้นหา

ค้นหา

ลองใช้งาน

ฟิลด์เดียว ผลลัพธ์ทุกประเภท ชื่อหน้ามาจากตัวกำหนดเส้นทางและไม่ต้องมีการประกาศ; บันทึกมาจากเอนทิตีที่มีแอตทริบิวต์ด้านล่าง ผลลัพธ์แต่ละรายการมีการระบุทิศทางที่จะไป ดังนั้นแถบจึงไม่ต้องตัดสินใจเกี่ยวกับความหมายของการคลิก

ผู้ให้บริการ

ผู้ให้บริการคือกลุ่มของสิ่งที่ค้นหาได้ การดำเนินการตามอินเทอร์เฟซคือการลงทะเบียนทั้งหมด — การตั้งค่าอัตโนมัติทำให้มันเกิดขึ้น ดังนั้นผู้ให้บริการที่เขียนในแอปพลิเคชันจึงเข้าร่วมการค้นหาโดยการมีอยู่ สิ่งเหล่านี้คือผู้ที่ตอบสนองที่นี่ โดยชื่อที่มีการจำกัดการค้นหาอยู่

  • 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

    จำนวนผลลัพธ์ ถ้าไม่มีการกำหนด การกำหนดค่าชุดจะตัดสินใจ

/api/search-result/list
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...