Ara
Deneyin
Bir alan, her türlü sonuç. Sayfa isimleri yönlendiriciden gelir ve beyan edilmesine gerek yoktur; kayıtlar ise aşağıdaki niteliği taşıyan varlıklardan gelir. Her sonuç nereye gideceğini taşır, bu nedenle çubuğun bir tıklamanın ne anlama geldiği konusunda karar vermesi gerekmez.
Sağlayıcılar
Bir sağlayıcı, bulunabilir nesnelerin bir ailesidir. Arayüzü uygulamak, tüm kayıttır — otomatik yapılandırma bunu etiketler, böylece bir uygulamada yazılmış bir sağlayıcı var olarak aramaya katılır. Bunlar, bir sorgunun kendini kısıtladığı isimle burada yanıt verenlerdir.
-
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);
}
}
Aranabilir varlıklar
Sınıf, bir varlığın bulunabilir olduğunu söyler; özellikleri ise neye dair olduğunu belirtir, her biri kendi türüyle — bir başlık okunur, bir miktar bir rakamdır, bir adres bütündür ya da hiçtir — ve tür hem SQL'i hem de puanları belirler. Mirasın yedi puanlama fonksiyonundan altısı, o listedir gizli olarak. Yedincisi akıl yürüttü ve o bir puanlama sınıfı adlandırır; cevabı soran kişiye bağlı olan varlık, provider: true ekler ve kendi sağlayıcısını alır.
-
contact
Wexample\SymfonyOrganization\Entity\Contact
Alanlar : name (text), email (email) -
demo_message
Wexample\SymfonyDesignSystemDemo\Entity\DemoMessage
Alanlar : body (text, 5) -
demo_room
Wexample\SymfonyDesignSystemDemo\Entity\DemoRoom
Alanlar : name (text) -
demo_user
Wexample\SymfonyUserDemo\Entity\DemoUser
Alanlar : email (email), username (text), firstName (text), lastName (text) -
organization
Wexample\SymfonyOrganization\Entity\Organization
Alanlar : 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
Bir sonuç bir varlıktır, dolayısıyla uç noktası o varlığın koleksiyonudur ve başka bir şey değildir. Aynı PHP sınıfından oluşturulan TypeScript deposu, nerede olduğunu söylenmeden çağırır — bu, yukarıdaki alanın kullandığı şeydir.
Sorgu parametreleri
- search
Ne arandığı. Boş bir sorgu, her şey yerine hiçbir şeye yanıt vermez.
- context
Aramanın yapıldığı yer, neye yanıt verebileceğini belirler. Gönderilen bağlamlar: default, header, form_field
- type
Yanıtı bir türe kısıtlar — bir varlık ismi veya bir sağlayıcı anahtarı.
- length
Kaç tane sonuç. Yoksa, paket yapılandırması karar verir.
curl "/api/search-result/list?search=dupont&context=header&length=5"
Çeviriler
Çubuk, bileşenin dört yüzünden kendi etiketlerini okur, bu nedenle bir yer tutucu asla işaretlemeye yazılmaz. Öte yandan, sonuç başlıkları kayıtın kendisinden veya rota adından gelir — bunların çevrilmesi henüz yapılandırılmamıştır ve bir sayfa şu anda rota adını insanlaştırılmış şekilde gösterir.
# assets/components/search-bar.fr.yml
placeholder: Rechercher...
empty: Aucun résultat.
pending: Recherche en cours...