खोजें

खोजें

इसे आजमाएं

एक फ़ील्ड, हर प्रकार का परिणाम। पृष्ठ नाम राउटर से आते हैं और किसी घोषणा की आवश्यकता नहीं होती; रिकॉर्ड उन एंटिटीज़ से आते हैं जो नीचे उल्लेखित विशेषता लेकर आती हैं। प्रत्येक परिणाम में यह होता है कि यह कहाँ जाता है, इसलिए बार को यह निर्णय लेने की आवश्यकता नहीं होती कि एक क्लिक का क्या अर्थ है।

प्रदाता

एक प्रदाता खोजे जाने योग्य वस्तुओं का एक परिवार है। इंटरफ़ेस को लागू करना पूरी पंजीकरण प्रक्रिया है - ऑटो-कॉन्फ़िगरेशन इसे चिह्नित करता है, इसलिए एक एप्लिकेशन में लिखा गया प्रदाता अपने अस्तित्व से खोज में शामिल होता है। ये वही हैं जो यहाँ उत्तर देते हैं, उस नाम से जिससे एक क्वेरी खुद को सीमित करती है।

  • 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 और बिंदुओं को निर्धारित करता है। विरासत के सात में से छह स्कोरिंग फ़ंक्शन उस सूची में छिपे हुए थे। सातवाँ तर्क करता है, और वही एक स्कोरिंग क्लास का नाम देता है; एंटिटी जिसका उत्तर उन पर निर्भर करता है जो पूछ रहे हैं, प्रदाता: सत्य जोड़ता है और अपना प्रदाता प्राप्त करता है।

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