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