Cari

Cari

Coba

Satu field, setiap jenis hasil. Nama halaman berasal dari router dan tidak memerlukan deklarasi; catatan berasal dari entitas yang membawa atribut di bawah ini. Setiap hasil menunjukkan kemana arahnya, jadi bar tidak perlu memutuskan apa arti sebuah klik.

Penyedia

Penyedia adalah satu keluarga dari hal-hal yang dapat ditemukan. Mengimplementasikan antarmuka adalah seluruh pendaftaran — tag autokonfigurasi menandainya, sehingga penyedia yang ditulis dalam aplikasi bergabung dengan pencarian berdasarkan keberadaannya. Ini adalah yang menjawab di sini, berdasarkan nama yang dibatasi oleh kueri.

  • 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);
    }
}

Entitas yang dapat dicari

Kelas menyatakan bahwa entitas dapat ditemukan; propertinya menyatakan tentang apa, masing-masing dengan jenisnya — sebuah judul dibaca, jumlah adalah angka, alamat adalah utuh atau tidak sama sekali — dan jenis menentukan baik SQL dan poin. Enam dari tujuh fungsi penilaian warisan adalah daftar itu dalam penyamaran. Yang ketujuh beralasan, dan yang satu itu menamai kelas penilaian; entitas yang jawabannya tergantung pada siapa yang bertanya menambahkan provider: true dan mendapatkan penyedia miliknya sendiri.

  • contact

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

  • demo_message

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

  • demo_room

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

  • demo_user

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

  • organization

    Wexample\SymfonyOrganization\Entity\Organization
    Field : 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

Sebuah hasil adalah entitas, jadi endpointnya adalah koleksi dari entitas itu dan tidak ada yang lain. Repositori TypeScript yang dihasilkan dari kelas PHP yang sama memanggilnya tanpa diberi tahu di mana letaknya — yang digunakan oleh field di atas.

Parameter kueri

  • search

    Apa yang dicari. Kueri kosong tidak menjawab apa pun daripada segalanya.

  • context

    Di mana pencarian dilakukan, yang menentukan apa yang mungkin dijawab. Konteks yang dikirim: default, header, form_field

  • type

    Membatasi jawaban ke satu jenis — nama entitas, atau kunci penyedia.

  • length

    Berapa banyak hasil. Jika tidak ada, konfigurasi bundle memutuskan.

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

Terjemahan

Bar membaca labelnya sendiri dari empat sisi komponen, jadi placeholder tidak pernah ditulis dalam markup. Judul hasil, di sisi lain, berasal dari catatan itu sendiri atau dari nama rute — menerjemahkan itu belum terhubung, dan halaman saat ini menunjukkan nama rutenya yang dihumanisasi.

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