Ara

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.

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